3

我在 C# 中有一个 dll,它返回一个类对象。

DLL 代码:

个人.cs:

namespace Extract
{
    public class Person
    {
        public string name;
        public string address;
        public int age;
        public int salary;
    }
}

Class1.cs

namespace Extract
{
    public class MClass
    {
        public static Person GetPerson()
        {
            Person p = new Person();
            p.name = "Deepak";
            p.address = "Bangalore";
            p.age = 30;
            p.salary = 20000;
            return p;
        }
    }
}

我在 C# 中有另一个程序“RunApp”,它具有相同的 Person.cs 类并尝试从上述 dll 中获取对象。

运行应用代码:

个人.cs:

namespace Extract
{
    public class Person
    {
        public string name;
        public string address;
        public int age;
        public int salary;
    }
}

Form1.cs:

namespace Ex
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Person mem = MClass.GetPerson();
        }
    }
}

在此之后,当我编译“RunApp”代码时,我得到一个错误:

“不能将类型'Extract.Person'隐式转换为'Ex.Person'”。我尝试将“RunApp”代码的命名空间从“Ex”更改为“Extract”,但同样的错误:“无法将类型“Extract.Person”隐式转换为“Extract.Person”。

我想将 Extract.dll 中的值发送到 RunApp 程序。我想在多个程序中使用这个 dll。

有人可以帮忙解决这个问题吗?

4

1 回答 1

7

类型由其程序集定义。Foo.Bar.SomeClass两个不同程序集中的两个相同副本是不同的类型,并且不可互换 - 即使它们具有相同的命名空间等。

您应该引用该库,并从那里重新使用该类型。

于 2012-06-18T08:38:01.203 回答