Necessidade de método de substituição que está em um namespace com outra classe que a constrói
-
21-08-2019 - |
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
}
}
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);
}