Necessidade de método de substituição que está em um namespace com outra classe que a constrói

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

Pergunta

Eu estou tentando substituir um método em um controle no Server SDK Comunidade chamado 'InlineTagsContainerTagEditor'.

Quando eu encontrar a fonte para este controle, ele está dentro de um arquivo com outra classe chamada 'TaggableContentTagEditableList'.

Aqui está o que eu acho que as partes relevantes são:

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

    }
}

Eu apenas estou tentando criar uma versão do TaggableContentEditableList que elimina determinadas 'tags'. O método para que eu tentaram substituir a seguir - mas eu fico muito perdido. Eu tenho que substituir o construtor para TaggableContentTagEditableList, a fim de ter o olhar construtor para o tipo correto com o meu método anulado?

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
    }
}
Foi útil?

Solução

Your problem seems to be in your override FormatTags

You are creating a new string with your stripped tags but then you send the old string into the base.

The old string hasn't been altered so your override isn't doing anything.

Try

public override string FormatTags(string[] tagList)
{
    // strip special tags
    string[] newTagList = stripTags(tagList);
    return base.FormatTags(newTagList);
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top