如何防止未知添加的方法调用
本文关键字:方法 调用 添加 何防止 未知 | 更新日期: 2023-09-27 18:18:13
我有一个建立在prism之上的核心库(框架),它加载了其他第三方构建的其他模块,这些模块应该使用"推荐"的方法,但是没有内置的机制(据我所知)来防止任何第三方代码使用仅用于内部/核心使用的方法。
是否有一个模式来检查调用代码的汇编,并验证它是否包含一些已知的签名?
这是棱镜,但我想将适用于任何DI/IoC框架,其中某些方法是内部只有
内部使用的方法应该被标记为内部的,因此对第三方调用者不可见。如果您需要在您自己的程序集中共享方法,请使用InternalsVisibleToAttribute
.
编辑
要使成员对第三方程序集不可用,将成员标记为内部。这将禁止第三方程序集的访问。我提到InternalsVisibleToAttribute
是因为
- 您的内部代码包含多个程序集
- 你已经将一些成员标记为public以提供汇编间访问,但是你不希望第三方代码访问这些成员。
的例子:
MyAssemblyA代码:
public static class SomeClass
{
//this method is public because I want to be able to use it in MyAssemblyB
public static void SomeMethodThatShouldBeInternal()
{
}
}
MyAssemblyB的代码:
public class Program
{
public static void Main()
{
SomeClass.SomeMethodThatShouldBeInternal();
}
}
要防止第三方代码访问SomeMethodThatShouldBeInternal()
,请更改声明:
public static class SomeClass
{
internal static void SomeMethodThatShouldBeInternal()
{
}
}
现在,MyAssemblyB将无法编译!但是,您可以通过向MyAssemblyA:
添加这个属性来修复这个问题。[assembly: InternalsVisibleTo("MyAssemblyB")]