usando la clausola where + nuovo vincolo con args?
-
22-07-2019 - |
Domanda
Ho un pezzo di codice simile al seguente:
public static T CreateSomething<T>(SomeType a) where T : SomeMicrosoftBaseClass, new()
{
var newElement = new T { SomeProperty = a};
DoStuff();
return newElement;
}
e ora ho bisogno di cambiare il codice in modo da poter passare al costruttore di SomeMicrosoftBaseClass un argomento booleano - che posso solo impostare sulla costruzione.
dal momento che " new () " il vincolo richiede un costruttore pubblico privo di parametri e poiché non potevo usare un'interfaccia o modificare SomeMicrosoftBaseClass, sto usando la riflessione in questo modo:
var newElement = (T) (typeof (T).GetConstructor(new Type[] { typeof(SomeType) }).Invoke(new object[] { a }));
qualcuno può suggerire un modo più elegante per farlo?
Soluzione
Forse puoi usare Activator.CreateInstance :
var newElement = (T)Activator.CreateInstance(typeof(T),a);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow