2009-07-23 37 views
2

我正在写一个非常简单的IoC/DI容器,和我有下面的代码:根据反思,.NET对象可以实际上没有构造函数吗?

ConstructorInfo[] ctors = concreteType.GetConstructors(); 

if (ctors.Length == 0) 
    return Activator.CreateInstance(concreteType); 

// more code goes here... 

我不能拿出导致其零个构造一个类型的测试情况下,即使与此:

class LonelyType {} 

是否有可能为.NET类型有没有构造,还是在CLR总是提供一个隐含的一个?

回答

8

是 - 静态类没有构造函数:

static class VeryLonelyType{} 

正常参数的构造函数是由C#编译器,而不是CLR提供。

请注意,就CLR而言,从C#生成的结构体也没有无参数构造函数。例如:

struct Foo{} 

将不包含无参数的构造函数。您可以它IL,可prove interesting ...

+0

打我吧...... :-P – LBushkin 2009-07-23 14:54:45

相关问题