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
}
}