-1

好的,我正在研究一个解决方案,其中包含 4 个不同的项目。我的一个项目(一个控制台应用程序)试图引用另一个项目(一个库)中定义的一些类;唯一的问题是,那些被调用的在库中被定义为内部。

如何在同一解决方案中的其他程序集/项目中使用这些内部类?我添加了对该库的引用,但这并没有帮助。就是说保护级别太高了(因为是内部的,所以只能在那个组件中使用)。

4

2 回答 2

1

您通常不应该访问internal. 这违背了首先宣布它的目的。但是,如果您确实需要...

如果你可以用internal东西改变装配,要么:

  1. 制作课程public,或
  2. 使用 将InternalsVisibleToAttribute其公开给您想要的程序集。

如果你不能改变它,或者决定不改变,那么你可以使用反射来访问这些internal类。对于您随后对类所做的某些部分,您应该能够使用dynamic关键字来使访问比使用反射更容易和更快。

于 2013-11-02T22:28:58.467 回答
0

您必须使用反射来访问其他程序集中的内部类,但它会显着变慢并且通常不能被编译器优化。它也有些复杂。

建议您公开一个公共类来包装来自其他程序集的内部类和方法,或者只是将其他程序集中的内部类切换为公共类。

于 2013-11-02T22:25:10.930 回答