You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#跨程序集访问public类型成员编译报错如何解决

报错原因

本次报错和跨程序集的public成员访问权限无关,属于C#基础语法错误:

  • C#中类的直接作用域内仅允许定义字段、属性、方法、事件等类成员,不支持直接编写可执行的业务逻辑语句
  • 你写的instance.Print();是方法调用的执行语句,不能直接放在AssemblyTwoClassOne类的根层级下,必须放入构造函数、普通方法、属性访问器等代码块内部才能正常执行。

你对public访问修饰符的理解是正确的,只要提前给AssemblyTwo项目添加AssemblyOne的程序集引用,public成员完全支持跨程序集访问。

解决方法

按需选择以下任意一种方案修改AssemblyTwo的代码即可:

方案1:将调用逻辑放入构造函数

类实例化时会自动执行Print方法:

using System;
using AssemblyOne;

namespace AssemblyTwo
{
    public class AssemblyTwoClassOne
    { 
        AssemblyOneClassOne instance = new AssemblyOneClassOne();
        // 构造函数内部允许写执行语句
        public AssemblyTwoClassOne()
        {
            instance.Print();
        }
    }
}

方案2:将调用逻辑放入自定义方法

需要主动调用自定义方法时才会执行Print方法:

using System;
using AssemblyOne;

namespace AssemblyTwo
{
    public class AssemblyTwoClassOne
    { 
        AssemblyOneClassOne instance = new AssemblyOneClassOne();
        // 自定义普通方法
        public void InvokePrint()
        {
            instance.Print();
        }
    }
}

内容的提问来源于stack exchange,提问作者Abdullah Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 14:48:01