我正在写一个非常简单的IoC / DI容器,我有以下代码:
ConstructorInfo[] ctors = concreteType.GetConstructors();
if (ctors.Length == 0)
return Activator.CreateInstance(concreteType);
// more code goes here...
我无法想出一个导致类型为零的构造函数的测试用例,即使这样:
class LonelyType {}
.NET类型是否可以拥有 no 构造函数,或者CLR是否总是提供隐式构造函数?
答案 0 :(得分:8)
是 - 静态类没有构造函数:
static class VeryLonelyType{}
普通的无参数构造函数由 C#编译器提供,而不是CLR。
请注意,就CLR而言,从C#生成的结构也没有无参数构造函数。例如:
struct Foo{}
不包含无参数构造函数。您可以在IL中执行此操作,prove interesting ...