2010-11-18 45 views
2

是否有一个属性可以用来限制对方法或程序集的访问?如何限制对方法的访问,只允许特定程序集访问它们?

(我正在使用C#,.Net 3.5)

例如

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

我要上的一些业务组件,其中一些认证等均可发生,要确保业务组件不能只通过访问直接访问,顶部添加代码的“接入层”层。

回答

3

对于您的课程,您可以使用internal关键字代替public,然后使用InternalsVisibleTo属性。

托马斯

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. 
} 
相关问题