这两个示例方法调用之间是否有很大的性能差异?
SampleClass sc = new SampleLib.SampleClass();
sc.DoSomething("Hello");
dynamic dyn = someAssembly.CreateInstance("SampleLib.SampleClass")
dyn.DoSomething("Hello");
让我们假设
动态dyn = someAssembly.CreateInstance( “SampleLib.SampleClass”)
不是经常打电话。一旦它创建了实例,它将继续只在创建的实例中继续工作。
答案 0 :(得分:3)
唯一可以确定的方法是在您的上下文中分析。为了设置期望,dynamic
非常聪明,并且(按模式)缓存实际的代码路径。因此,它比原始反射快得多,但是界面应该稍微快一些并且具有静态检查的优势。
就个人而言,我会编写一个来自库dll的接口,当前代码和SampleLib都可以引用它,即
IMyInterface foo = (IMyInterface)someAssembly.CreateInstance(
"SampleLib.SampleClass");
...
foo.DoSomething("Hello");