Müssen Verfahren außer Kraft zu setzen, die mit einer anderen Klasse in einem Namespace, die sie konstruiert

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

Frage

Ich versuche, eine Methode für eine Kontrolle in dem Community Server SDK 'InlineTagsContainerTagEditor' genannt außer Kraft zu setzen.

Wenn ich die Quelle für diese Steuerung zu finden, ist es in einer Datei mit einer anderen Klasse namens ‚TaggableContentTagEditableList‘.

Hier ist, was ich denke, dass die relevanten Teile sind:

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

    }
}

Ich versuche nur eine Version des TaggableContentEditableList zu erstellen, die bestimmte ‚Tags‘ entfernt. Das Verfahren für die ich habe versucht, unten außer Kraft zu setzen - aber ich habe sehr verloren. Muß ich den Konstruktor für TaggableContentTagEditableList um außer Kraft zu setzen den Konstruktor Look für den richtigen Typen mit meiner überschriebene Methode zu haben?

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
    }
}
War es hilfreich?

Lösung

Ihr Problem scheint in der Überschreibung FormatTags

zu sein

Sie sind eine neue Zeichenfolge mit gestrippt Tags zu schaffen, sondern dann die alte Zeichenfolge in die Basis, die Sie senden.

Die alte Zeichenfolge wurde nicht verändert, so die Überschreibung tut nichts.

Versuchen

public override string FormatTags(string[] tagList)
{
    // strip special tags
    string[] newTagList = stripTags(tagList);
    return base.FormatTags(newTagList);
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top