解密密封类的命名空间有什么特殊要求吗?

时间:2012-10-06 18:28:49

标签: c#

我用一些静态方法创建了一个名为Transactions的密封类,并成功编译了它。然后我创建了一个测试项目来测试我所有方法的功能,并添加了对密封类的dll文件的引用。

当我在Test Project中输入类的命名空间时,intellisense会解析引用并添加它。

我甚至可以键入类名,智能感知提供了类的公共方法和属性的完整列表,但是当我尝试编译项目时,我收到错误“找不到类型或名称空间名称'事务' (您是否缺少using指令或程序集引用?)“

当我双击错误时,它指向代码顶部的命名空间参考。如果我删除了命名空间,当我将鼠标悬停在我的方法调用上时,会出现一个问号,提示我添加刚删除的命名空间。什么???

所以在一个帐户上,它抱怨它在编译期间找不到命名空间,另一方面,如果我删除命名空间,它会识别方法的依赖关系,并希望我将其添加回去。我被困在岩石和坚硬的地方之间。

我唯一的怀疑是使用密封类导致问题,因为如果我创建另一个类(不是密封)并添加相同的方法,问题就会消失。

我们将不胜感激。这是.NET 4.0 Framework

2 个答案:

答案 0 :(得分:1)

检查项目属性是否使用相同的" flavor"框架(客户端配置文件/完整的承诺,框架的不同版本)。这通常是导致问题的原因。

答案 1 :(得分:1)

好的,所以我想出了问题。事实证明,我的Test App自动设置为使用.NET 4 Client Profile。当我注意到其中一条警告声明由于对System.Web的依赖而无法解析对我的事务dll的引用时,我发现了这一点。

当我尝试添加引用时,我找不到它,并看到可用程序集的结果是基于.NET 4 Client Profile过滤的。在我更改配置文件以匹配我的程序集(.NET 4.0)后,我能够添加所需的System.Web程序集引用和我的代码编译没有问题。

对我而言,这种体验的道德不是将环境中提出的警告视为理所当然,因为尽管大多数时候它们可能会被忽略,但实际上它们确实有助于解决错误。

希望这篇文章可以帮助其他人,但问题的标题可能会产生误导,因为当我发布它时,我的假设是错误的。

由于