首页 > 解决方案 > 无法访问另一个程序集中的公共类型成员。我有两个程序集,我想从另一个程序集中的一个程序集访问公共成员

问题描述

using System;

namespace AssemblyOne
{

    public class AssemblyOneClassOne
    {
        protected internal int ID = 101;
        public int id = 102;
        public void Print() 
        {
            Console.WriteLine("Abdullah is a handsome hunk!");
        }
    }
    public class AssemblyOneClassTwo 
    {
        public void SampleMethod() 
        {
            AssemblyOneClassOne a1 = new AssemblyOneClassOne();
            Console.WriteLine(a1.ID);
        }
    }
    public class A
    { 
        public static void Main()
        {
            AssemblyOneClassTwo a2 = new AssemblyOneClassTwo();
            a2.SampleMethod();
            Console.ReadKey();
        }
    }
}
using System;
using AssemblyOne;

namespace AssemblyTwo

{

    public class AssemblyTwoClassOne
    { 
        AssemblyOneClassOne instance = new AssemblyOneClassOne();
        instance.Print();//Over here I am getting compile time error, 'instance' does not exist in the current context, 'instance.Print' does not exist in the current context
    }
}

据我所知,公共类型可以在同一个程序集中的任何地方以及另一个程序集中访问

标签: c#.netaccess-modifiers

解决方案


是的,可以从另一个程序集访问公共类型,但您的方法Print()应该在 class 的方法中调用AssemblyTwoClassOne

像这样的东西-

namespace AssemblyTwo
{
    public class AssemblyTwoClassOne
    {
        AssemblyOneClassOne instance = new();
        public void Method() => instance.Print();
    }
}

推荐阅读