gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 20:38:19 27 4
gpt4 key购买 nike

当我向第三方应用程序发布 DLL 时,我能否只让最终用户看到一些方法?

我的代码建立在 7-8 个不同的项目之上,这些项目互相调用,它们有不同的命名空间,比如“Company.ProjectName”,我认为它与“< strong>Company"命名空间,我只希望其中一个项目(具有一个定义为 BTW 的接口(interface))对外部世界可见。

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

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

编辑:即使 namespace 构造为“CompanyName.Project1”、“CompanyName.Project2”,internal 关键字是否有效?他们会见面吗?

最佳答案

你不需要组合它们,你只需要一个friend assembly :

When you are developing a class library and additions to the library are contained in separate assemblies but require access to members in existing assemblies that are marked as Friend (Visual Basic) or internal (C#).
...
Only assemblies that you explicitly specify as friends can access Friend (Visual Basic) or internal (C#) types and members.

InternalsVisibleTo属性:

[assembly: InternalsVisibleTo("AssemblyB")]   

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

(回答您的编辑:这是在程序集级别指定的,命名空间是什么并不重要)。

关于c# 在导出 DLL 时隐藏类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35289853/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com