我似乎无法理解.NET的这些支柱。
答案 0 :(得分:1)
CTS(通用型系统) 所以你可以说CTS描述了如何在运行时声明,使用和管理类型,并促进跨语言集成,类型安全和高性能代码执行。
CLS(通用语言规范) 公共语言规范(CLS)是语言设计者和类库设计者之间的协议,它使用所有语言必须遵循的基本语言特性的公共子集。
正如您在图像中看到的,CLS是CTS的子集
alt text http://www.microsoft.com/taiwan/msdn/columns/DoNet/images/NET_CTS1.gif
答案 1 :(得分:0)
如前所述,CLS是CTS的子集。但这些术语的实际定义还有很多。
我建议阅读CLR via C#。
答案 2 :(得分:0)
一些例子肯定会有所帮助。
不符合CLS的关键事项之一是无符号数(例如,uint)。另一个是函数指针(委托)。如果它在线的两端都没有意义,那么它就不是“普通的”; CLS定义了一组常见类型,这些类型不仅可以在CLR中工作,还可以在某些常见且特定的互操作方案中工作。
如果要强制执行CLS,可以将“CLSCompliant”属性添加到程序集中,方法是将其添加到项目的assemblyinfo.cs文件中。
[assembly: CLSCompliant(true)]
您也可以将其作为属性添加到类中。
[CLSCompliant(true)]
public class HospitalLocationEntity : EntityBase
{
...
}
执行这些操作将导致C#编译器(或VB,在属性上使用适当的VB语法)引发CLS合规性违规的编译错误。
此外,将[ScriptService]和[ScriptMethod]属性添加到Web服务(.asmx)将导致服务生成JSON服务输出,并且将要求用于服务响应的数据在类和程序集中标记为CLSCompliant水平。
<System.Web.Services.WebService()> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
<ScriptService()> _
Public Class HospitalLocationService
Inherits System.Web.Services.WebService
<WebMethod()> _
<ScriptMethod()> _
Public Function GetAll() As List(Of HospitalLocationEntity)
Return (New HospitalLocation()).GetAll().Data
End Function
End Class
答案 3 :(得分:0)
CTS是描述类型属性的正式规范:
CLS在IL级别促进.NET语言之间的互操作性:
例如:
Foo()
和
foo()
是同一件事。