2009-07-23 5 views
2

J'écris un très simple conteneur IoC/DI, et j'ai le code suivant:Un objet .NET peut-il réellement ne pas avoir de constructeur, selon la réflexion?

ConstructorInfo[] ctors = concreteType.GetConstructors(); 

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

// more code goes here... 

Je ne peux pas venir avec un test qui se traduit par un type ayant zéro constructeurs, même avec ceci:

class LonelyType {} 

est-il possible pour un type .NET pour avoir aucun constructeurs, ou ne le CLR toujours fournir un un implicite?

Répondre

8

Oui - classes statiques ont aucun constructeur:

static class VeryLonelyType{} 

Le constructeur parameterless normal est fourni par le compilateur C#, pas le CLR. Notez qu'en ce qui concerne le CLR, les structures générées à partir de C# n'ont pas non plus de constructeurs sans paramètres. Par exemple:

struct Foo{} 

ne contiendra pas de constructeur sans paramètre. Vous peut le faire en IL, qui peut prove interesting ...

+0

me devança ... :-P – LBushkin

+0

Oh me rappelle http://www.youtube.com/watch?v=xrxlnBJ4R0o – inspite

Questions connexes