在Windows CE中创建比反射更快的对象实例

Ian*_*las 7 c# reflection windows-ce .net-3.5 .net-cf-3.5

所以在看了一篇描述如何比反射更快创建对象实例的文章之后我非常兴奋,因为在我的代码中我目前有相当多的反思.遗憾的是DynamicMethod,并ILGenerator在Windows CE不支持.编辑:ActivatorWindows CE支持

我想知道是否有人知道如何以比CE中的反射更快的速度创建对象实例.如果没有,也许有人可以解释为什么Windows CE不支持此功能,以及是否有任何解决方法在CE中获得此功能.即使我必须编写自己的代码DynamicMethodILGenerator类,它可能是值得的:)

SLa*_*aks 1

根据您的设计,您也许能够创建一组(编译时)实例化委托(您可以存储在静态类中)。

例如:

static class Factory<T> {
    public Func<T> Creator { get; set; }
}

var instance = Factory<TSomething>.Creator();

//Elsewhere
Factory<SomeClass>.Creator = () => new SomeClass();
Run Code Online (Sandbox Code Playgroud)

仅当您可以提前使用相关类型填充工厂时,这才会有帮助。


如果您拥有的只是 a Type(而不是通用参数),则可以将委托存储在 a 中Dictionary<Type, Func<object>>,尽管由于强制转换,效率会降低。
您仍然需要填充字典。