Ich versuche, den Wert einer benutzerdefinierten Klasse mit List<T>
Eigenschaften zu erhalten, aber es löst eine Ausnahme (Objekt entspricht nicht Zieltyp.).versucht, generische Liste Eigenschaft Wert, aber gibt mir eine Ausnahme
Ich möchte zuerst überprüfen, ob der Wert Null
ist, wenn nicht dann den Wert verarbeiten.
Modell:
public class CustomModel
{
public List<Foo> FooList { get; set; }
public List<Bar> BarList { get; set; }
}
Codes für die Verarbeitung der Modelldaten:
public class Result<T>
{
private readonly T _model;
public Result(T model)
{
_model = model;
}
private CustomObject CreateSomething(T model)
{
var obj = new CustomObject();
var type = model.GetType();
var properties = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (var property in properties)
{
if (property.PropertyType.IsGenericType &&
typeof(List<>).IsAssignableFrom(property.PropertyType.GetGenericTypeDefinition()))
{
//this throws an error
var testList = property.GetValue(this, new object[] { });
//processed value will be passed to object
//some codes here after getting the property value
}
}
return obj;
}
}
Wie bekomme ich den Wert, so kann ich sie bearbeiten?
getestet einfach Ihren Code und es funktioniert gut – Fabjan
es nicht an meinem Ende. Es wird eine Ausnahme ausgelöst: 'Objekt stimmt nicht mit dem Zieltyp überein.' – rpmansion
Können Sie mehr Code zur Verfügung stellen, in der Liste relevanter Teil dieser Klasse, auf den das Schlüsselwort' this' verweist (nicht alle Eigenschaften nur eine 'kurze Version') – Fabjan