J'ai besoin de mes sous-classes de DataContext et je trouve la fonction ci-dessous pour ce qui traîne quelque part et il trouve que ma sous-classe, mais je ne peux pas instancier :(Comment faire Activator.CreateInstance pour différents constructeurs?
public static IEnumerable<T> GetSubclassesFor<T>(Assembly assembly)
{
return (assembly.GetTypes()
.Where(t => t.BaseType == (typeof (T)))
.Select(t => (T) Activator.CreateInstance(t, new object[] {"asdasd"})))
.ToList();
}
Je reçois le message d'erreur suivant:
System.Reflection.TargetInvocationException : Ett undantagsfel har inträffat i MALET för en aktivering ----> System.TypeInitializationException:. Typinitieraren för PlaynGO.Cashier.Da ta.CashierDC utlöste ett undantag. ----> System.NullReferenceException: Objektreferensen har inte angetts jusqu'à dans instans av ett objekt. vid System.RuntimeMethodHandle. InvokeConstructor (IRuntimeMethodInfo méthode , Object [] args, ref signature SignatureStruct, RuntimeType DeclaringType) vid System.Reflection.RuntimeConstructorInfo.Invoke (BindingFlags invokeAttr, liant Binder, objet [] paramètres , culture CultureInfo) vid système .RuntimeType.CreateInstanceImpl (BindingFlags bindingAttr, liant Binder, Object [] args , culture CultureInfo, Object [] activationAttributes) vid System.Activator.CreateInstance (type type , Object [] args) vid PlaynGO.Dbml. Reflexion.b _3 (Type t) i Reflexion.cs: ligne 23 vid System.Linq.Enumerable.WhereSelectArrayIterator
2.MoveNext() vid System.Collections.Generic.List
1..ctor (IEnumerable1 collection) vid System.Linq.Enumerable.ToList(IEnumerable
une source ) vid PlaynGO.Dbml.Reflexion.GetInstances (Assemblée assemblage) i Reflexion.cs: ligne 23 vid PlaynGO.Dbml.UnitTests.TestReflection.TestGettingTypes (i) TestReflection.cs: ligne 21 --TypeInitializationException vid PlaynGO.Cashier.Data.CashierDC..ctor (connexion à cordes ) --NullReferenceException vid PlaynGO. Cashier.Data.CashierDC..cctor()
Le constructeur que je veux d'appeler est le suivant:
public CashierDC(string connection) :
base(connection, mappingSource)
MappingSource est directement instanciée et un champ d'instance. Où vais-je mal? Que dois-je faire pour que cela fonctionne?
PS. This is .NET 4.0
Veuillez essayer de traduire le message d'erreur. –
LOL ..Il a dit "do do" ... :) –
Le cctor n'est-il pas le constructeur statique? En a-t-il un et si oui pouvez-vous l'afficher? –