我创建了一个类库项目并构建它。现在我将 Dll 复制到“C:\”。现在我想用反射打开这个 Dll:
using System.Reflection;
byte[] assem = System.IO.File.ReadAllBytes(@"c:\Company.dll");
var loadedAssem = Assembly.Load(assem);
Type thePersonType = loadedAssem.GetType();
var theObj = loadedAssem.CreateInstance("Company.Person");
// or var theObj = loadedAssem.CreateInstance("Company.Person")as IPlugin ;
Type[] paramTypes = new Type[1];
paramTypes[0] = Type.GetType("System.String");
MethodInfo PersonInfo = thePersonType.GetMethod("FullName", paramTypes);
Object[] parameters = new Object[1];
parameters[0] = "Mr. ";
Object returnVal = PersonInfo.Invoke(theObj, parameters);
MessageBox.Show(returnVal.ToString());
我不能调用我的“FullName”方法。这是我的界面:
public interface IPlugin
{
String FullName(String PreName);
}
这是我的 DLL 中的 Person 类:
public class Person:IPlugin
{
public int PersonID { get; set; }
public String PersonName { get; set; }
public String PersonLName { get; set; }
public String FullName(String PreName)
{
return PreName+this.PersonName + this.PersonLName;
}
}