允许您限制对DLL的访问的属性是什么?

时间:2011-05-12 15:24:47

标签: c# security .net-4.0 attributes assemblies

我记得我简单地读过你可以添加程序集属性,这样你就只能允许特定的程序集调用程序集。但是我不记得我在哪里看到了或者怎么做 - 有人能指出我正确的方向吗?

为了清楚起见,这个问题是:

  1. 我有程序集A和程序集B.
  2. 程序集B需要访问程序集A中的某些成员。
  3. 两个程序集都将以软件产品的形式发送给其他人。
  4. 我只希望程序集B能够看到程序集A中的成员。
  5. 任何需要在装配A中使用某些东西的人都必须通过装配B来完成。装配A的成员都是隐藏的/内部的,所以第三方看不到它们。

4 个答案:

答案 0 :(得分:4)

您可以使用InternalsVisibleTo Attribute来允许引用程序集的程序集查看标记为internal的类和成员。我相信没有办法阻止程序集引用你的程序集并访问所有public类和成员。

注意:使用反射,任何程序集都可以访问任何类或成员,无论是public还是internal(或private),前提是应用程序运行完全信任(通常是这种情况)。

答案 1 :(得分:1)

您正在寻找

Friend Assemblies

  

朋友集会是一个集会   可以访问另一个程序集的朋友   (Visual Basic)或内部(C#)类型   和成员。如果你确定了   作为朋友集会组装,你没有   更长时间必须标记类型和成员   作为公众,为了他们   由其他集会访问。

答案 2 :(得分:0)

没有这样的程序集属性,只有一个与类型可见性相关的程序集属性,它授予其他程序集对程序集内部的访问权限 - InternalsVisibleToAttribute

答案 3 :(得分:0)

我认为没有任何属性可以设置为限制访问。

我使用此链接作为参考。

http://msdn.microsoft.com/en-us/library/4w8c1y2s(v=vs.71).aspx

对于DLL代码本身,请尝试使用internal来标记只有程序集可以访问的项目。对于外部世界真正可以访问的项目,请标记为公开。