WEB开发网
开发学院软件开发C语言 Effective C# 原则30:选择与CLS兼容的程序集 阅读

Effective C# 原则30:选择与CLS兼容的程序集

 2009-02-19 08:16:09 来源:WEB开发网   
核心提示: 那么属性又会怎样呢?它们与CLS是兼容的吗?public MyClass TheProperty{get { return _myClassVar; }set { _myClassVar = value; }}这要视情况而定,如果MyClass是CLS兼容的,Effective C# 原则

那么属性又会怎样呢?它们与CLS是兼容的吗?

public MyClass TheProperty
{
 get { return _myClassVar; }
 set { _myClassVar = value; }
}

这要视情况而定,如果MyClass是CLS兼容的,而且表明了它是与CLS兼容的,那么这个属性也是与CLS兼容的。相反,如果MyClass没有标记为与CLS兼容,那么属性也是与CLS不兼容的。就意味着前面的TheProperty属性只有在MyClass是在与CLS兼容的程序集中是,它才是与CLS兼容的。

如果你的公共的或者受保护的接口与CLS是不兼容的,那么你就不能编译成CLS兼容的程序集。作为一个组件的设计者,如果你没有给程序集标记为CLS兼容的,那么对于你的用户来说,就很难创建与CLS兼容的程序集了。他们必须隐藏你的类型,然后在CLS兼容中进行封装处理。确实,这样可以完成任务,但对于那些使用组件的程序员来说不是一个好方法。最好还是你来努力完成所有的工作,让程序与CLS兼容:对于用户为说,这是可以让他们的程序与CLS兼容的最简单的方法。

第二个规则是取决与你自己的:你必须确保所有公共的及受保护的操作是语言无关的。同时你还要保证你所使用的多态接口中没有隐藏不兼容的对象。

操作符重载这个功能,有人喜欢有人不喜欢。同样,也并不是所有的语言都支持操作符重载的。CLS标准对于重载操作符这一概念即没有正面的支持也没有反正的否定。取而代之是,它为每个操作符定义了一了函数:op_equals就是=操作符所对应的函数名。op_addis是重载了加号后的函数名。当你重载了操作符以后,操作符语法就可以在支持操作符重载的语言中使用。如果某些开发人员使用的语言不支持操作符重载时,他们就必须使用op_这样的函数名了。如果你希望那些程序员使用你的CLS兼容程序集,你应该创建更多的方便的语法。介此,推荐一个简单的方法:任何时候,只要重载操作运算符时,再提供一个等效的函数:

上一页  1 2 3 4  下一页

Tags:Effective 原则 选择

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接