我有一个需要T参数的方法
private Dictionary<string, string> GetCustomAttributes(T model, System.Reflection.PropertyInfo property)
我在不同的地方使用它 - 有时我将T模型作为第一个参数传递,但我也想将已知的自定义类型传递给方法,例如。
public Dictionary<string, string> DoTheJob(T model)
{
var errors = new Dictionary<string, string>();
foreach (System.Reflection.PropertyInfo property in typeof(T).GetProperties())
{
if (typeof(ClassB).IsAssignableFrom(property.PropertyType))
{
foreach (System.Reflection.PropertyInfo subProperty in property.GetType().GetProperties())
{
var propertyModel = property.GetValue(model);
//T newModel = (T)Convert.ChangeType(propertyModel, typeof(T));
foreach (var newError in GetCustomAttributes(propertyModel, subProperty))
{
errors.Add(newError.Key, newError.Value);
}
}
}
foreach (var newError in GetCustomAttributes(model, property))
{
errors.Add(newError.Key, newError.Value);
}
}
return errors;
}
传递给DoTheJob方法的T模型是ClassA类型。然后该方法读取其属性,检查其属性,并检查ClassB属性的属性。
public class ClassA
{
public ClassB Approved { get; set; }
}
问题是GetCutomAttributes方法确实期望T类型作为参数,并且呼叫ClassB不是预期的。
我尝试将ClassB转换为T泛型,但它不是IConvertible,所以无法实现它。
如何将ClassB作为T传递给GetCustomAttributes方法?