反射调用DLL 返回类的问题
有两个项目 项目A 为 DLL
项目A
using System;
namespace CheShidll
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
public class Class1
{
public List ReceiveMoMessage(string str)
{
List li=new List();
li.Content= "aaa "+str;
return li;
}
}
public class List
{
public string Content;
}
}
然后我在项目B中调用项目A
Assembly dss = Assembly.LoadFile(@ "D:\net1.0\CheShidll\bin\Debug\ "+filename);//读取程序集
foreach (Type type in dss.GetTypes())
{
MethodInfo m = type.GetMethod( "ReceiveMoMessage "); //实例方法
if (m != null)
{
object o = Activator.CreateInstance(type);
List li=new List();
li=(List)m.Invoke(o, new object[] { "1234 "});
}
}
(项目B也有List类 而且是一样的)
问题:在 li=(List)m.Invoke(o, new object[] { "1234 "});这句
提示:指定的转换无效。
请问我应该怎么解决这个问题?
(当我在DLL里返回string类型,用string s=(List)m.Invoke(o, new object[] { "1234 "});调用时就没问题)
------解决方案--------------------public class List
这个即使在两个项目里都有,即使名字一样,那也是两个类,不能互相转换的。
你可以把这个类放到另外的一个项目C中,A和B都引用这个C