获取System.Type的默认构造函数(即没有参数的实例构造函数)的最有效方法是什么?
我正在考虑下面的代码,但似乎应该有一个更简单,更有效的方法来做到这一点.
Type type = typeof(FooBar) BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance; type.GetConstructors(flags) .Where(constructor => constructor.GetParameters().Length == 0) .First();
Curt Hagenlo.. 129
type.GetConstructor(Type.EmptyTypes)
在使用MeasureIt(http://msdn.microsoft.com/en-us/magazine/cc500596.aspx)测量此方法与我的方法之后,除了最简单的情况之外,这种方法速度更快,即便如此,它也几乎没有变慢.所以这是最简单也是最快的.谢谢! (7认同)
你永远不会看到的静态成员......这太棒了. (6认同)
但不使用PCL和`.Net Standard 1.4-` (2认同)
Alex Lyman.. 29
如果您确实需要 ConstructorInfo对象,请参阅Curt Hagenlocher的回答.
在另一方面,如果你真的只是想创建从一个运行时的对象System.Type
,看System.Activator.CreateInstance
-它不只是未来需求(活化处理比更多的细节ConstructorInfo.Invoke
),这也是很多丑陋的少.
type.GetConstructor(Type.EmptyTypes)
如果您确实需要 ConstructorInfo对象,请参阅Curt Hagenlocher的回答.
在另一方面,如果你真的只是想创建从一个运行时的对象System.Type
,看System.Activator.CreateInstance
-它不只是未来需求(活化处理比更多的细节ConstructorInfo.Invoke
),这也是很多丑陋的少.