Ich habe eine kleine Methode geschrieben, deren einziger Zweck darin besteht, zu überprüfen, ob eine Eigenschaft für eine bestimmte Klasse null ist. Wenn die Eigenschaft null ist, erstellen Sie eine neue Instanz davon. Ich bin immer auf einen Teil stecken, wo ich eigentlich einen Wert ein:C# Reflektion, Festlegen einer neuen Instanz einer Null-Eigenschaft
public static void CheckIfPropertyIsNull<TEntity>(SomeBusinessEntity someBusinessEntity) where TEntity : new()
{
var properties = typeof(SomeBusinessEntity).GetProperties();
foreach (PropertyInfo propertyInfo in properties)
{
Type currentType = propertyInfo.PropertyType;
if (currentType == typeof(TEntity))
{
var propertyData = propertyInfo.GetValue(someBusinessEntity, null);
if (propertyData == null)
{
object instance = Activator.CreateInstance(typeof(TEntity));
// And then?
//propertyInfo.SetValue(null, instance);
return;
}
}
}
}
Ich versuche, die SetValue() -Methode verwendet, aber ohne Glück.
Sie haben sich die Mühe gemacht, vom Generikasystem anzufordern, dass jeder von Ihnen bereitgestellte Typ einen parameterlosen Konstruktor hat - warum also nicht einfach 'new TEntity()' anstatt 'Activator.CreateInstance (...)' ? –
Ich hatte einen Gedankengang und kritzelte nur mit dem Code herum. Ich habe vorher eine neue TEntity() benutzt. –