好的,我正在研究一个解决方案,其中包含 4 个不同的项目。我的一个项目(一个控制台应用程序)试图引用另一个项目(一个库)中定义的一些类;唯一的问题是,那些被调用的在库中被定义为内部。
如何在同一解决方案中的其他程序集/项目中使用这些内部类?我添加了对该库的引用,但这并没有帮助。就是说保护级别太高了(因为是内部的,所以只能在那个组件中使用)。
好的,我正在研究一个解决方案,其中包含 4 个不同的项目。我的一个项目(一个控制台应用程序)试图引用另一个项目(一个库)中定义的一些类;唯一的问题是,那些被调用的在库中被定义为内部。
如何在同一解决方案中的其他程序集/项目中使用这些内部类?我添加了对该库的引用,但这并没有帮助。就是说保护级别太高了(因为是内部的,所以只能在那个组件中使用)。
您通常不应该访问internal
. 这违背了首先宣布它的目的。但是,如果您确实需要...
如果你可以用internal
东西改变装配,要么:
public
,或InternalsVisibleToAttribute
其公开给您想要的程序集。如果你不能改变它,或者决定不改变,那么你可以使用反射来访问这些internal
类。对于您随后对类所做的某些部分,您应该能够使用dynamic
关键字来使访问比使用反射更容易和更快。
您必须使用反射来访问其他程序集中的内部类,但它会显着变慢并且通常不能被编译器优化。它也有些复杂。
建议您公开一个公共类来包装来自其他程序集的内部类和方法,或者只是将其他程序集中的内部类切换为公共类。