Нужно переопределить метод, который находится в пространстве имен, с другим классом, который его создает
Я пытаюсь переопределить метод элемента управления в SDK Сервера совместной работы, который называется InlineTagsContainerTagEditor.
Когда я нахожу источник для этого элемента управления, он находится внутри файла с другим классом с именем TaggableContentTagEditableList.
Вот что я думаю, что соответствующие части:
namespace CommunityServer.Controls
{
public class TaggableContentTagEditableList : WrappedContentBase, ICallbackEventHandler
{
protected virtual InlineTagsContainerTagEditor GetInlineTagEditor(ITagsContainer container)
{
return new InlineTagsContainerTagEditor(container);
}
}
public class InlineTagsContainerTagEditor : TWC.InlineEditor
{
ITagsContainer _container;
public InlineTagsContainerTagEditor(ITagsContainer container)
: base()
{
_container = container;
}
}
}
Я просто пытаюсь создать версию TaggableContentEditableList, которая удаляет определенные "теги". Метод для этого я попытался переопределить ниже - но я очень заблудился. Нужно ли переопределять конструктор для TaggableContentTagEditableList, чтобы конструктор искал правильный тип с моим переопределенным методом?
public partial class TaggableContentEditableListExclude : TaggableContentTagEditableList
{
protected override InlineTagsContainerTagEditor GetInlineTagEditor(ITagsContainer container)
{
return new TagExcludeOption(container);
}
}
public partial class TagExcludeOption : InlineTagsContainerTagEditor
{
ITagsContainer _container;
public TagExcludeOption(ITagsContainer container) : base(container)
{
_container = container;
}
public override string FormatTags(string[] tagList)
{
// strip special tags
string[] newTagList = stripTags(tagList);
return base.FormatTags(newTagList);
}
private string[] stripTags(string[] tagList)
{
//doing something here
}
}
1 ответ
Кажется, ваша проблема в переопределении FormatTags
Вы создаете новую строку с вашими раздетыми тегами, но затем отправляете старую строку в базу.
Старая строка не была изменена, поэтому ваше переопределение ничего не делает.
Пытаться
public override string FormatTags(string[] tagList)
{
// strip special tags
string[] newTagList = stripTags(tagList);
return base.FormatTags(newTagList);
}