如果存在DLL文件,是否可能只运行代码?

本文关键字:运行 代码 是否 存在 DLL 文件 如果 | 更新日期: 2023-09-27 18:04:27

是否有可能检查是否存在一个DLL文件,如果它存在,运行一些正在访问DLL的代码,但是如果你删除DLL文件,代码将不会运行并开始抛出异常?

如果存在DLL文件,是否可能只运行代码?

您可以检查程序集是否存在(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();
    }
}