wstcl 2025-04-09 14:58 采纳率: 38.1%
浏览 5
已结题

谁用过C#之友元程序集

谁知道C#中有一个叫友元程序集的东西,意思是程序集A如果想让程序集B访问它的成员,就可以通过assembly: InternalsVisibleTo("assemblyB"),这样程序集B就可访问到程序集B的internal修饰的成员,这里的程序集是一个dll库文件或exe可执行文件,同一程序中的cs文件不可以吗,并且它在实际应用很少吧

  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2025-04-09 14:58
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    C# 中的友元程序集

    C# 中的友元程序集(InternalsVisibleTo)是指在程序集 A 中使用 InternalsVisibleTo 属性来指定程序集 B 可以访问程序集 A 的内部成员。

    使用 InternalsVisibleTo 属性可以让程序集 B 访问程序集 A 的内部类、方法、字段等成员,但是这并不意味着程序集 B 可以修改这些成员。

    例如:

    // 程序集 A
    [assembly: InternalsVisibleTo("程序集 B")]
    
    public class MyClass
    {
        internal void MyMethod() { }
    }
    

    在上面的代码中,程序集 A 使用 InternalsVisibleTo 属性指定程序集 B 可以访问内部类 MyClass 的成员。

    在程序集 B 中,可以使用以下代码来访问程序集 A 的内部成员:

    // 程序集 B
    using Program集A;
    
    MyClass myClass = new MyClass();
    myClass.MyMethod();
    

    需要注意的是,使用 InternalsVisibleTo 属性时,程序集 B 需要在同一个文件夹或子文件夹中,否则将无法访问程序集 A 的内部成员。

    此外,使用 InternalsVisibleTo 属性时,需要在编译时将程序集 A 和程序集 B 都编译成 DLL 文件,然后在程序集 B 中使用 InternalsVisibleTo 属性指定程序集 A 的名称。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月24日
  • 已采纳回答 4月16日
  • 创建了问题 4月9日