C#反射,设置一个null属性的新实例
本文关键字:属性 新实例 实例 null 一个 反射 设置 | 更新日期: 2023-09-27 17:59:21
我编写了一个小方法,其唯一目的是检查给定类的属性是否为null。如果属性为null,那么创建一个新的实例
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;
}
}
}
}
我尝试使用SetValue()方法,但没有成功。
在SetValue
中,您仍然需要提供属性所有者的实例:someBusinessEntity
。
object instance = new TEntity();
// And then
propertyInfo.SetValue(someBusinessEntity, instance);
请注意,您的逻辑在我看来很奇怪。您正在使用泛型类型来设置所有属性。为什么不使用属性的类型?