J'ai un morceau de code qui ressemble à ceci:en utilisant la clause where + nouvelle contrainte avec args?
public static T CreateSomething<T>(SomeType a) where T : SomeMicrosoftBaseClass, new()
{
var newElement = new T { SomeProperty = a};
DoStuff();
return newElement;
}
et maintenant je dois changer le code pour que je puisse passer au constructeur de SomeMicrosoftBaseClass un argument booléen - que je ne peux mettre sur la construction.
depuis la « nouvelle() » contrainte nécessite un paramètre moins public constructeur, et que je ne pouvais pas utiliser une interface ou modifier SomeMicrosoftBaseClass, j'utilise la réflexion comme ceci:
var newElement = (T) (typeof (T).GetConstructor(new Type[] { typeof(SomeType) }).Invoke(new object[] { a }));
quelqu'un peut-il suggérer une manière plus élégante de faire ceci?
juste être conscient Activate.CreateInstance est incroyablement lent par rapport à la nouvelle() – JTtheGeek