Frage

Ich habe folgende Schnittstellen:

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

Meine Umsetzung des ITemplateItem sieht wie folgt aus:

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
}

Aber für die ITemplateCategory Implementierung der Compiler sagt mir, dass meine Klasse ist nicht CLS-konform.

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
}

Ok,

Ich konnte nur diese Warnungen ignorieren oder sie deaktivieren, indem Sie die CLSCompliant (false) Attribut zu meiner Klasse. Aber ich bin neugierig, warum dies geschieht. Expecially weil der Compiler beschwert sich nicht über die inferface selbst.

Geschieht dies für Klassen, die Schnittstellen im Allgemeinen aussetzen oder habe ich nur eine verbotene Stichwort verwenden?

War es hilfreich?

Lösung

Sind diese in verschiedenen Baugruppen durch Zufall? Ist ITemplateItem in einer Baugruppe, die nicht CLSCompliant sein muss behaupten? I denkt das würde es erklären - in diesem Fall nur, dass die Baugruppe CLSCompliant machen -. Oder vielleicht sogar nur ITemplateItem

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top