2009-03-19 20 views
0

J'essaie de remplacer une méthode sur un contrôle dans le SDK Community Server appelé 'InlineTagsContainerTagEditor'.Nécessité de remplacer la méthode qui se trouve dans un espace namspace avec une autre classe qui le construit

Lorsque je trouve la source de ce contrôle, il se trouve dans un fichier avec une autre classe appelée 'TaggableContentTagEditableList'.

Voici ce que je pense que les parties concernées sont les suivantes:

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

    } 
} 

Je suis juste en train de créer une version du TaggableContentEditableList qui supprime certains « balises ». La méthode pour cela que j'ai essayé de remplacer ci-dessous - mais je suis très perdu. Dois-je redéfinir le constructeur pour TaggableContentTagEditableList afin que le constructeur recherche le type correct avec ma méthode overriden?

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 
    } 
} 
+0

Je note que vous avez changé votre code pour résoudre le problème je l'ai mentionné dans ma réponse, mais vous a donné ma réponse au statut accepté ... est-il résoudre votre problème ou êtes-vous encore un haveing ​​avec le code fixe ci-dessus? –

Répondre

1

Votre problème semble être dans votre FormatTags override

Vous créez une nouvelle chaîne avec vos balises dépouillées mais vous envoyez la vieille chaîne dans la base.

L'ancienne chaîne n'a pas été modifiée et votre remplacement ne fait rien.

Essayez

public override string FormatTags(string[] tagList) 
{ 
    // strip special tags 
    string[] newTagList = stripTags(tagList); 
    return base.FormatTags(newTagList); 
}