我用c#做一个普通的类库,一个应用程序去调用它.问题是:
1)如何能够通过代码动态调用而不是在exe的引用中加入对动态库的引用
2)如何注册c#类库,这个类库是不是需要什么样的格式?
3)如果注册成功,那么应用程序应该如果动态调用?
因为我这个事先不知道这个dll的名称,只是能得到一个dll名称的字符串,所以就需要动态的加载.请高手指点.
你可以在GAC中注册你的类库,首先用sn.exe生成一个key文件,然后用这个文件签名你的dll,
在gacutil.exe注册你的组件到GAC中,如果要调要的,只要添加.net引用就行了
事先不知道这个dll的名称,只是能得到一个dll名称的字符串,这个名称的字符串就是dll的名称呀
想要动态调用,可以通过Reflection 实现
通过 System.Reflection.Assembly.LoadFrom 可以得到一个 System.Reflection.Assembly的object A ,再通过该GetType() ,可以得到某个Class 的 type ,然后调用A的CreateInstance方法创建对象
string DllName = "x.dll";
string ClassName = "MySample.Test";
System.Reflection.Assembly dllFile
try
{
dllFile = System.Reflection.Assembly.LoadFrom(DllName);
}
catch(System.IO.FileNotFoundException ec)
{
return false;
}
System.Type theType = dllFile.GetType(ClassName);
if(theType != null)
{
System.Object obj = dllFile.CreateInstance(theType.FullName);
}
else
{
return false;
}