C# - 禁用动态关键字

时间:2010-05-07 20:17:28

标签: c# visual-studio-2010 late-binding dynamic-keyword late-bound-evaluation

有没有办法在.net 4中禁用“dynamic”关键字?

我认为如果使用动态关键字,VS2010的代码分析功能可能会有一个规则使构建失败,但我不能解决它。

5 个答案:

答案 0 :(得分:5)

它是C#4.0语言的一部分,所以不是没有。

你可以使用FXCop来查找它,如果它遇到它就会失败。

风格警察可能会改为:

http://code.msdn.microsoft.com/sourceanalysis

这是一个关于同一问题以及风格警察如何成为答案的链接。还有一篇关于如何让FX警察可能寻找动态关键字的帖子,尽管它并不完美。

http://social.msdn.microsoft.com/Forums/en/vstscode/thread/8ce407ba-bdf7-422b-bbcd-ca4701c3a76f

答案 1 :(得分:2)

目标.net 1.0? : - )

或进行代码审核。

(或者,为了不那么滑稽,编写自定义FxCop或CA规则以禁止使用动态应该非常容易)

你现在不想为C ++宏杀人吗? : - )

答案 2 :(得分:2)

动态关键字不是邪恶的,但使用它可能是。

它会导致您只能在运行时找到的代码错误。 应该不惜一切代价避免这种情况。 运行时错误很糟糕。编译时错误很好。

您可以使用以下内容来设置自己的标准。 http://joel.fjorden.se/static.php?page=CodeStyleEnforcer

答案 3 :(得分:2)

删除对Microsoft.CSharp.dll的引用,我想也许dynamic的所有用法都无法编译。

答案 4 :(得分:1)

我不确定我理解对动态关键字的这种非理性恐惧是什么。除了那些只是愚蠢的因为那些是合法的静态定义类型之外,对于匿名变量和.NET 3.5的var关键字存在这种类型的歇斯底里。

动态关键字用于高度专业化的目的,我不明白为什么任何人都不想理解为什么会使用它。然而,通过一个团队会议解释.NET 4的一些新功能(包括动态关键字)可以解决阻止发生这种情况的问题。我认为你更像是团队的高级或高级领导;告诉你的团队他们是否觉得他们需要使用动态关键词来看你是不是很容易。

这正是我给我的团队的指示,因为我发现我们不太可能使用dynamic关键字,因为我们不编写COM互操作活动。过去我会将任何类型的动态代理使用推迟到像Linfu或Castle这样的已建立的库中,并将动态代理的实现留给他们使用或不使用动态关键字。