【问题标题】:Can't access class due to Assembly name change由于程序集名称更改而无法访问类
【发布时间】:2012-09-05 12:00:41
【问题描述】:

我有几个项目的解决方案

一开始,Assembly name = B, Default namespace = B 在源代码中,我用 Namespace B.C. 定义了一些类。没有编译错误

现在我将所有程序集名称从 B 更改为 A,默认命名空间仍为 B

然后我得到编译错误,据说是由于保护级别

对此有什么想法吗?

【问题讨论】:

  • 你真的需要更具体。显然还有其他一些变化。贴一些代码。具体来说,可能是给出错误的行以及类的定义?
  • 制作东西public,错误就会消失。或者,将默认命名空间从 B 更改为 A

标签: c# namespaces .net-assembly


【解决方案1】:

您很可能省略了类可见性标识符(您知道,所有那些 publicprotectedprivate 的东西)。默认情况下,如果我没记错的话,如果你省略了类可见性声明,C# 假定它是internal (and there's a good question on SO about it),所以它对你的调用方法不可见。

最简单的方法是将这些类显式标记为公共,例如

public class YOURCLASSNAME {
     //other stuff you have
}

但是您应该考虑将课程公开是否适合您的情况。封装 OOP 原则(在某种程度上)意味着您必须避免声明所有内容public

无论如何,一些代码示例可以使这个问题成为一个可回答的问题。现在只是猜测和心理调试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多