只是想知道为什么下面的类声明在变量名(带有绿色的标记)下划线,并说明如下:
类型的MyClass与CLS不兼容.
CustModel.cs
public class CustModel
{
Public List<MyClass> ListOfMyClass { get; set; }
}MyClass.cs
public class MyClass
{
public int field1 { get; set; }
public string desc { get; set; }
public string title { get; set; }
}我在MVC视图中使用CustModel作为返回对象(即):
public ActionResult MyStuff()
{
List<MyClass> lst = GetSomethingList();
CustModel mdl = new CustModel();
mdl.ListOfMyClass = lst;
return this.View(mdl);
}我没有得到一个错误,但我只是想了解为什么它不符合CLS,同时,这是否是一个好的实现?
发布于 2015-02-03 19:09:45
如果类不在为类定义的[assembly:System.CLSCompliantAttribute(true)]的程序集中,则将得到该消息。
发布于 2015-02-03 19:10:28
如果类是在不同的程序集中定义的,请确保两个程序集都使用[assembly:CLSCompliant(true)]修饰(或者至少确保两个程序集是一致的)。
未标记为符合CLS的程序集被视为不符合CLS。
如果MyClass位于未修饰为CLS兼容的程序集中,但CustModel (因为它具有使用MyClass的公共属性)标记为CLS兼容,则将收到编译器警告。
进一步阅读:https://msdn.microsoft.com/en-us/library/vstudio/system.clscompliantattribute(v=vs.100).aspx
https://msdn.microsoft.com/en-us/library/vstudio/bhc3fa7f(v=vs.100).aspx
https://stackoverflow.com/questions/28306558
复制相似问题