0

Community Server 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
    }
}
4

1 に答える 1