2009-03-19 6 views
0

Ich versuche, eine Methode auf einem Steuerelement in der Community Server SDK namens 'InlineTagsContainerTagEditor' zu überschreiben.Müssen Methode überschreiben, die in einem Namspace mit einer anderen Klasse ist, die es erstellt

Wenn ich die Quelle für dieses Steuerelement finden, ist es innerhalb einer Datei mit einer anderen Klasse namens "TaggableContentTagEditableList". Hier

ist das, was ich denke, 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 gerade versucht, eine Version des TaggableContentEditableList zu erstellen, die bestimmte ‚Tags‘ entfernt. Die Methode dafür habe ich versucht unten zu überschreiben - aber ich bin sehr verloren. Muss ich den Konstruktor für TaggableContentTagEditableList überschreiben, damit der Konstruktor mit der Methode overriven nach dem richtigen Typ sucht?

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

i beachten Sie Ihren Code geändert, das Problem ich in meiner Antwort erwähnt zu beheben, aber du hast meine Antwort den Status akzeptiert ... hat es Ihr Problem zu beheben oder haveing ​​Sie noch ein mit der obige feste Code? –

Antwort

1

Ihr Problem scheint in der Überschreibung FormatTags

Sie erstellen eine neue Zeichenfolge mit gestrippt Tags zu sein, aber dann senden Sie die alte Zeichenfolge in die Basis.

Die alte Zeichenfolge wurde nicht geändert, so dass Ihre Überschreibung nichts bewirkt.

Versuchen

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