Необходимо переопределить метод, который находится в namspace, другим классом, который его создает

StackOverflow https://stackoverflow.com/questions/664229

Вопрос

Я пытаюсь переопределить метод для элемента управления в 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);
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top