Необходимо переопределить метод, который находится в namspace, другим классом, который его создает
-
21-08-2019 - |
Вопрос
Я пытаюсь переопределить метод для элемента управления в 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
}
}
Решение
Ваша проблема, похоже, заключается в ваших переопределенных тегах формата
Вы создаете новую строку с вашими удаленными тегами, но затем отправляете старую строку в базу.
Старая строка не была изменена, так что ваше переопределение ничего не делает.
Попробуй
public override string FormatTags(string[] tagList)
{
// strip special tags
string[] newTagList = stripTags(tagList);
return base.FormatTags(newTagList);
}