是否有可用于限制对方法或程序集的访问的属性?
(我在C#,.Net 3.5工作)
e.g。
[RestrictionAttribute(//Specify an assembly or a key or something here)]
Public void MyMethod()
{
//Do something...
}
我想在一些业务程序集之上添加一个代码的“访问层”,在这些程序集中可以进行一些身份验证等,并且希望确保无法直接访问业务程序集,只能通过访问层。
答案 0 :(得分:3)
您可以为您的班级使用internal
关键字代替public
,然后使用InternalsVisibleTo
属性。
托马斯
答案 1 :(得分:2)
不使用属性,您可以执行以下操作:
using System.Reflection;
using System.Security;
protected const string AUTHORIZED_CALLER
= "YourTrustedAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7bb5a56c4391e80f";
public void MyMethod()
{
if (Assembly.GetCallingAssembly().FullName != AUTHORIZED_CALLER) {
throw new SecurityException("Unauthorized method call.");
}
// Now do something.
}