根据反思,.NET对象实际上没有构造函数吗?

时间:2009-07-23 14:51:37

标签: .net reflection

我正在写一个非常简单的IoC / DI容器,我有以下代码:

ConstructorInfo[] ctors = concreteType.GetConstructors();

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

// more code goes here...

我无法想出一个导致类型为零的构造函数的测试用例,即使这样:

class LonelyType {}

.NET类型是否可以拥有 no 构造函数,或者CLR是否总是提供隐式构造函数?

1 个答案:

答案 0 :(得分:8)

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

static class VeryLonelyType{}

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

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

struct Foo{}

不包含无参数构造函数。您可以在IL中执行此操作,prove interesting ...