是否可以检查是否存在DLL文件,如果存在则运行一些正在访问DLL的代码,但如果删除DLL文件则代码将无法运行并开始抛出异常?
答案 0 :(得分:2)
您可以检查程序集是否存在(File.Exist),如果找到该文件,则从该程序集创建一个类型的实例,并在其上调用方法。
这样的事情:
var assemblyLocation = "someLocation";
var methodToRun = "SomeMethod";
if (File.Exists(assemblyLocation))
{
var assembly = Assembly.LoadFile(assemblyLocation);
var instanceOfType = assembly.CreateInstance("SomeType");
if (instanceOfType != null) {
var methodInfo = instanceOfType.GetType().GetMethod(methodToRun);
if (methodInfo != null) {
methodInfo.Invoke(instanceOfType, null);
}
}
}
如果您可以访问所创建对象的类型(类或接口),当然可以改进这一点,因此您不必使用反射来执行该方法。
像这样:
var assemblyLocation = "someLocation";
if (File.Exists(assemblyLocation))
{
var assembly = Assembly.LoadFile(assemblyLocation);
var instanceOfType = assembly.CreateInstance("SomeType") as SomeType;
if (instanceOfType != null) {
instanceOfType.SomeMethod();
}
}