سؤال

لدي الواجهات التالية:

public interface ITemplateItem
{
    int Id { get; set; }
    String Name { get; set; }
    String Text { get; set; }
    int  CategoryId { get; set; }
    int  Typ { get; set; }
}

public interface ITemplateCategory
{
    int Id { get; set; }
    String Name { get; set; }

    List<ITemplateItem> TemplateItems { get; set; }
    void Add(ITemplateItem item);
    void Remove(ITemplateItem item);
    ITemplateItem CreateTemplateItem();
}

يبدو أن تنفيذي لـ itemplateItem يشبه هذا:

public class MyTemplateItem : ITemplateItem
{
    #region ITemplateItem Member
    public int Id { get; set; }
    public String Name { get; set; }
    public String Text { get; set; }
    public int CategoryId { get; set; }
    public int Typ { get; set; }
    #endregion
}

ولكن بالنسبة لتنفيذ itemplateCategory ، يخبرني برنامج التحويل البرمجي أن صفي ليس متوافقًا مع CLS.

public class MyTemplateCategory : ITemplateCategory
{
    #region ITemplateCategory Member
    public int Id { get; set; }
    public String Name { get; set; }

    // Warning: type of TemplateItems not CLS-Compliant
    public List<ITemplateItem> TemplateItems { get; set; } 

    // Warning: Argument not CLS-Compliant
    public void Add(ITemplateItem item)
    {
        throw new NotImplementedException();
    }

    // Warning: Argument not CLS-Compliant
    public void Remove(ITemplateItem item)
    {
        throw new NotImplementedException();
    }

    // Warning: Return type not CLS-Compliant
    public ITemplateItem CreateTemplateItem() 
    {
        throw new NotImplementedException();
    }
    #endregion
}

موافق،

يمكنني فقط تجاهل هذه التحذيرات أو إيقاف تشغيلها عن طريق إضافة سمة clscompliant (false) إلى صفي. لكنني فضولي لماذا يحدث هذا. وخاصة لأن المترجم لا يشكو من النشر نفسه.

هل يحدث هذا للفصول التي تعرض واجهات بشكل عام أم أنني استخدمت فقط كلمة رئيسية محظورة؟

هل كانت مفيدة؟

المحلول

هل هذه في مجموعات مختلفة بأي فرصة؟ هو ITemplateItem في جمعية لا تدعي أنها clscompliant؟ أنا فكر في هذا من شأنه أن يفسر ذلك - في هذه الحالة ، فقط اجعل هذا التجميع clscompliant - أو ربما فقط ITemplateItem.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top