I have a dll in C# which returns a class object.
DLL code:
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;
}
}
}
I have another program “RunApp” in C# which has the same Person.cs class and tries to get the object from the above dll.
RunApp Code:
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();
}
}
}
After this, when I compile the “RunApp” code, I get an Error:
“Cannot implicitly convert type ‘Extract.Person’ to ‘Ex.Person’ “. I
tried changing the namespace of the “RunApp” code from ‘Ex’ to
‘Extract’, but too the same Error: “Cannot implicitly convert type
‘Extract.Person’ to ‘Extract.Person’ “.
I want to send values from the Extract.dll to RunApp program. I want to use this dll at multiple programs.
Can anybody please help how to crack this problem?
A type is defined by its assembly. Two identical copies of
Foo.Bar.SomeClassin two different assemblies are different types, and are not interchangeable – even if they have the same namespace etc.You should reference the library, and re-use the type from there.