我想重写名为“InlineTagsContainerTagEditor”在社区服务器SDK控制的方法。

当我找到这个控制的信号源,它与所谓的“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
    }
}
有帮助吗?

解决方案

您的问题似乎是在你的覆盖FormatTags

您正在创建与剥离标签一个新的字符串,但随后你的旧字符串送入基地。

在旧字符串还未改变,从而覆盖中没有做任何事情。

尝试

public override string FormatTags(string[] tagList)
{
    // strip special tags
    string[] newTagList = stripTags(tagList);
    return base.FormatTags(newTagList);
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top