C# C类不符合CLS

C# C类不符合CLS,c#,asp.net-mvc,C#,Asp.net Mvc,只是想知道为什么下面的类声明在变量名下面加下划线(带有绿色的波浪形标记),并说: MyClass的类型不符合CLS。 CustModel.cs public class CustModel { Public List<MyClass> ListOfMyClass { get; set; } } public class MyClass { public int field1 { get; set; } public string desc { get; set; }

只是想知道为什么下面的类声明在变量名下面加下划线(带有绿色的波浪形标记),并说:

MyClass的类型不符合CLS。

CustModel.cs

public class CustModel
{
  Public List<MyClass> ListOfMyClass { get; set; }
}
public class MyClass
{
  public int field1 { get; set; }
  public string desc { get; set; }
  public string title { get; set; }
}
我在MVC视图中将CustModel用作返回对象(即:

public ActionResult MyStuff()
{
List lst=GetSomethingList();
CustModel mdl=新的CustModel();
mdl.ListOfMyClass=lst;
返回此.View(mdl);
}

我没有收到错误,但我只是想了解为什么它不符合CLS,同时,这是否是一个好的实现?

如果该类不在具有
[assembly:System.CLSCompliantAttribute(true)]
为其定义。

如果在不同的程序集中定义了类,请确保两个程序集都用
[assembly:CLSCompliant(true)]
修饰(或者至少确保两个程序集一致)

未标记为CLS兼容的程序集被视为 不符合CLS

如果
MyClass
位于未装饰为符合CLS的程序集中,但
CustModel
(因为它有一个使用
MyClass
的公共属性)标记为符合CLS,则会收到编译器警告

进一步阅读:


也许是小写字段名不符合通常的命名约定。
public
关键字是小写的,所以您甚至不会编译第一个代码段。;)@CodesInChaos CLS不需要特定的大小写-事实上它是不区分大小写的。要求是不能有两个仅因大小写不同而不同的类/成员。(例如,
name
name
)这些类是否在同一程序集中定义?
public ActionResult MyStuff()
{
  List<MyClass> lst = GetSomethingList();
  CustModel mdl = new CustModel();
  mdl.ListOfMyClass = lst;

  return this.View(mdl);
}