3

クラス オブジェクトを返す C# の dll があります。

DLL コード:

Person.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;
        }
    }
}

同じ Person.cs クラスを持ち、上記の dll からオブジェクトを取得しようとする C# の別のプログラム「RunApp」があります。

RunApp コード:

Person.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.SomeClass2つの異なるアセンブリ内の の 2つの同一のコピーは異なるタイプであり、同じ名前空間などを持っていても交換できません。

ライブラリを参照し、そこから型を再利用する必要があります。

于 2012-06-18T08:38:01.203 に答える