当我向第三方应用程序发布DLL时,我只能使某些方法对最终用户可见吗?
我的代码构建在7-8个不同的项目上,相互称它们为,它们有不同的名称空间,比如我认为在"Company“命名空间下关联的名称空间,并且我只希望其中一个项目(它有一个定义了BTW的接口)对外部世界是可见的。
解决方案中的每个项目都编译成DLL,然后我使用ILASM将它们组合起来。
顺便说一句,在解决方案中使用这些的其他项目与这个dll无关。
编辑:即使名称空间是像"CompanyName.Project1","CompanyName.Project2“那样构造的,internal关键字也能工作吗?他们会见面吗?
发布于 2016-02-09 10:51:52
您不需要组合它们,只需要一个朋友大会:
在开发类库时,对库的添加包含在单独的程序集中,但需要访问标记为友程序集(Visual )或内部程序集(C#)的现有程序集中的成员。 ..。 只有显式指定为朋友的程序集才能访问朋友(Visual )或内部(C#)类型和成员。
[assembly: InternalsVisibleTo("AssemblyB")] 帮助锁定它,以便只有指定的程序集才能访问internal项。
(回答您的编辑:这是在程序集级别指定的,无论名称空间是什么)。
发布于 2016-02-09 10:51:12
使用internal
参见下面的示例
public class MyPublicClass
{
public void DoSomething()
{
var myInternalClass = new MyInternalClass();
myInternalClass.DoSomething();
}
}
internal class MyInternalClass
{
public void DoSomething()
{
}
}在您的DLL中,MyPublicClass将对外部用户可见--那些引用您DLL的用户。
MyInternalClass将不可见。
https://stackoverflow.com/questions/35289853
复制相似问题