12

有什么方法可以禁用 .net 4 中“动态”关键字的使用?

我认为如果使用 dynamic 关键字,VS2010 的代码分析功能可能会导致构建失败,但我无法做到这一点。

4

5 回答 5

5

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

您可以使用FXCop来查找它,如果遇到它,则构建失败。

Style cop 可能会起作用:

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

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

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

于 2010-05-07T20:21:10.847 回答
3

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

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

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

于 2010-05-07T20:29:50.933 回答
2

目标.net 1.0?:-)

或者做代码审查。

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

你现在不会为 C++ 宏而杀戮吗?:-)

于 2010-05-07T20:21:40.480 回答
2

删除对 的引用Microsoft.CSharp.dll,我认为可能所有的使用dynamic都无法编译。

于 2010-05-07T20:42:33.500 回答
1

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

动态关键字具有高度专业化的目的,我不明白为什么有人会在不理解原因的情况下使用它。然而,阻止这种情况的发生可以通过 1 次团队会议来解决,该会议解释 .NET 4 的一些新功能,包括动态关键字。我假设您更像是团队的高级或高级领导;如果他们觉得需要使用动态关键字来第一次见到您,应该很容易告诉您的团队。

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

于 2010-06-18T12:31:07.847 回答