首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >导出DLL时c#隐藏类成员

导出DLL时c#隐藏类成员
EN

Stack Overflow用户
提问于 2016-02-09 10:40:00
回答 2查看 4.5K关注 0票数 2

当我向第三方应用程序发布DLL时,我只能使某些方法对最终用户可见吗?

我的代码构建在7-8个不同的项目上,相互称它们为,它们有不同的名称空间,比如我认为在"Company“命名空间下关联的名称空间,并且我只希望其中一个项目(它有一个定义了BTW的接口)对外部世界是可见的。

解决方案中的每个项目都编译成DLL,然后我使用ILASM将它们组合起来。

顺便说一句,在解决方案中使用这些的其他项目与这个dll无关。

编辑:即使名称空间是像"CompanyName.Project1","CompanyName.Project2“那样构造的,internal关键字也能工作吗?他们会见面吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-09 10:51:52

您不需要组合它们,只需要一个朋友大会

在开发类库时,对库的添加包含在单独的程序集中,但需要访问标记为友程序集(Visual )或内部程序集(C#)的现有程序集中的成员。 ..。 只有显式指定为朋友的程序集才能访问朋友(Visual )或内部(C#)类型和成员。

https://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.internalsvisibletoattribute%28v=vs.110%29.aspx属性:

代码语言:javascript
运行
复制
[assembly: InternalsVisibleTo("AssemblyB")]   

帮助锁定它,以便只有指定的程序集才能访问internal项。

(回答您的编辑:这是在程序集级别指定的,无论名称空间是什么)。

票数 3
EN

Stack Overflow用户

发布于 2016-02-09 10:51:12

使用internal

参见下面的示例

代码语言:javascript
运行
复制
public class MyPublicClass
{

    public void DoSomething()
    {
        var myInternalClass = new MyInternalClass();
        myInternalClass.DoSomething();
    }
}

internal class MyInternalClass
{

    public void DoSomething()
    {
    }
}

在您的DLL中,MyPublicClass将对外部用户可见--那些引用您DLL的用户。

MyInternalClass将不可见。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35289853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档