تحتاج إلى تجاوز الأسلوب الذي في مساحة الاسم مع فئة أخرى الذي يبني عليه

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

سؤال

واني اسعى الى تجاوز أسلوب على عنصر تحكم في SDK الجماعة خادم يسمى 'InlineTagsContainerTagEditor ".

وعندما أجد مصدر لعنصر التحكم هذا، فمن داخل ملف مع فئة أخرى تسمى 'TaggableContentTagEditableList ".

وهنا هو ما أعتقد أن الأجزاء ذات الصلة هي:

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

    }
}

وأنا مجرد محاولة لإنشاء نسخة من TaggableContentEditableList الذي يزيل "علامات" معينة. طريقة لذلك حاولت أن تجاوز أدناه - ولكن أنا تضيع جدا. لا بد لي من تجاوز المنشئ للTaggableContentTagEditableList من أجل الحصول على نظرة منشئ للنوع الصحيح مع بلدي طريقة تنقضها؟

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
    }
}
هل كانت مفيدة؟

المحلول

ومشكلتك ويبدو أن في FormatTags التجاوز

وإنك لعلى خلق سلسلة جديدة مع العلامات الخاصة بك جردت ولكن بعد ذلك قمت بإرسال سلسلة القديمة إلى القاعدة.

ولم يتم تغيير السلسلة القديمة حتى تجاوز بك لا تفعل أي شيء.

وحاول

public override string FormatTags(string[] tagList)
{
    // strip special tags
    string[] newTagList = stripTags(tagList);
    return base.FormatTags(newTagList);
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top