如何限制对方法的访问,只允许特定的程序集访问它们?

时间:2010-11-18 12:03:12

标签: c# .net attributes

是否有可用于限制对方法或程序集的访问的属性?

(我在C#,.Net 3.5工作)

e.g。

[RestrictionAttribute(//Specify an assembly or a key or something here)]
Public void MyMethod()
{
    //Do something...
}

我想在一些业务程序集之上添加一个代码的“访问层”,在这些程序集中可以进行一些身份验证等,并且希望确保无法直接访问业务程序集,只能通过访问层。

2 个答案:

答案 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.
}