2011-05-12 39 views
4

我记得简单地读过,你可以添加程序集属性,这样你只能允许特定程序集调用程序集。但我不记得我在哪里看到或如何去做 - 有人能指引我朝着正确的方向吗?什么是允许您限制对DLL的访问的属性?

只是要明确,这个问题是问:

  1. 我有一个组装和装配B.
  2. 大会B需要组件A内访问某些成员(们)
  3. 两个组件将以软件产品的形式发送给其他人。
  4. 我只想集B能够看到组件A成员
  5. 任何人谁需要使用在组件中的东西都将通过组装B.大会A的成员这样做的所有隐藏/内部使第三各方不能看到它们。
+0

哪个框架版本? – 2011-05-12 15:30:26

+0

v4,更新的标签。 – 2011-05-12 15:31:59

回答

4

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

注意:使用反射,任何组件可以访问任何类或成员,而不管是否是publicinternal(或private),所提供的应用程序与完全信任(其通常是这种情况)上运行。

+0

这就是我需要的。我希望公共成员是公开的,但是内部要跨越程序集。我现在就试试看。 – 2011-05-12 15:32:58

1

Friend Assemblies是你在找什么:

朋友集会是 可以访问其他程序集的朋友 (Visual Basic)或内部(C#)类型 和成员的程序集。如果您将一个 装配标识为朋友装配,则不必将其类型和成员 标记为公开,以使它们可以由其他装配访问 。

0

没有这样的程序集属性,只有一个程序集属性与类型可见性相关,该程序集允许其他程序集对内部程序集的访问 - InternalsVisibleToAttribute

+0

这就是我所指的。 – 2011-05-12 15:37:42

0

我不认为你可以设置任何属性来限制访问。

我用这个链接作为参考。

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

对于DLL的代码本身,尽量使用内部标记,只有组件能够访问项目。对于外界真正可以访问的物品,请将其标记为公开。

+0

是的 - 我想我的问题不清楚,我会更新它,因为@ dtb的答案正是我所期待的。 – 2011-05-12 15:42:13

相关问题