Pregunta

Estoy intentando anular un método en un control en el SDK del servidor de la comunidad llamado 'InlineTagsContainerTagEditor'.

Cuando encuentro el origen de este control, está dentro de un archivo con otra clase llamada 'TaggableContentTagEditableList'.

Esto es lo que creo que son las partes relevantes:

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

    }
}

Solo estoy intentando crear una versión de TaggableContentEditableList que elimine ciertas 'etiquetas'. El método para eso he intentado anular a continuación, pero me pierdo mucho. ¿Debo anular el constructor de TaggableContentTagEditableList para que el constructor busque el tipo correcto con mi método reemplazado?

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

Solución

Su problema parece estar en sus etiquetas de formato de anulación

Está creando una nueva cadena con sus etiquetas despojadas pero luego envía la cadena vieja a la base.

La cadena anterior no se ha modificado, por lo que su anulación no está haciendo nada.

Probar

public override string FormatTags(string[] tagList)
{
    // strip special tags
    string[] newTagList = stripTags(tagList);
    return base.FormatTags(newTagList);
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top