在向第三方应用程序发布DLL时,我是否只能让最终用户看到一些方法?
我的代码基于7-8个不同的项目,互相称呼,它们有不同的名称空间,例如“ Company.ProjectName ”,我认为这些名称与“< strong>公司“命名空间,我只希望其中一个项目(其界面定义为BTW)对外部世界可见。
解决方案中的每个项目都编译成DLL,然后我使用ILASM将它们组合在一起。
顺便说一句,在解决方案中还有其他项目使用这些与此dll无关的项目。
编辑:即使命名空间的构造方式如“ CompanyName.Project1 ”,“ CompanyName.Project2 ”,internal
关键字也会有效吗?他们会见面吗?
答案 0 :(得分:2)
您无需将它们组合在一起,只需要friend assembly:
在开发类库时,库的附加内容包含在单独的程序集中,但需要访问标记为Friend(Visual Basic)或internal(C#)的现有程序集中的成员。
...
只有您明确指定为朋友的程序集才能访问Friend(Visual Basic)或内部(C#)类型和成员。
function prepareList() {
$('#expList').on('click', 'li:has(ul)', function(event) {
if (this == event.target) {
$(this).toggleClass('expanded').children('ul').toggle('medium');
return false;
}
});
$('#expList li:has(ul)').addClass('collapsed').children('ul').hide();
};
有助于将其锁定,因此只有指定的程序集才能访问[assembly: InternalsVisibleTo("AssemblyB")]
项。
(回答你的编辑:这是在程序集级别指定的,命名空间是什么并不重要。)
答案 1 :(得分:1)
使用internal
参见下面的示例
public class MyPublicClass
{
public void DoSomething()
{
var myInternalClass = new MyInternalClass();
myInternalClass.DoSomething();
}
}
internal class MyInternalClass
{
public void DoSomething()
{
}
}
在您的DLL中,MyPublicClass
将对外部用户可见 - 那些引用您的DLL。
MyInternalClass
将不可见。