晚期基于CPU架构绑定到dll

时间:2013-11-14 13:39:25

标签: c# .net reflection late-binding

我目前正在编写一个帮助库,通过Software Toolbox's TopServer连接到车间PLC。

TopServer库有x86和x64架构的单独版本,我想在运行时使用基于调用代码的CPU架构的后期绑定加载适当的版本。两个库中的方法具有相同的签名。

我可以使用反射来使用下面的代码加载相关对象,但我想知道在调用代码中使用此实例的最佳方法是什么。

public class LateBinding
{
    public static T GetInstance<T>(string dllPath, string fullyQualifiedClassName) where T : class
    {
        Assembly assembly = System.Reflection.Assembly.LoadFile(dllPath);
        Type t = assembly.GetType(fullyQualifiedClassName);

        return (T)Activator.CreateInstance(t);
    }
}

由于我是后期绑定,因此我没有获得运行前的类型,因此认为创建基于库方法签名的接口将是实现这两个版本的好方法。

有没有人对此方法有所了解或对其他方法有什么建议?

1 个答案:

答案 0 :(得分:0)

如果目标DLL仅因目标体系结构而异,并且程序集强命名,则不需要接口。

我的建议是分别命名为* _64.dll和* _86.dll并选择一个进行编译。

在运行时,您需要做的就是System.Reflection.Assembly.LoadFile正确的文件。