속성이 표시된 속성의 인스턴스 값을 어떻게 얻습니까?
-
03-07-2019 - |
문제
다음과 같은 사용자 정의 속성으로 표시된 클래스가 있습니다.
public class OrderLine : Entity
{
...
[Parent]
public Order Order { get; set; }
public Address ShippingAddress{ get; set; }
...
}
부모 속성으로 표시된 엔티티에서 속성을 가져와야하는 일반적인 방법을 작성하고 싶습니다.
내 속성은 다음과 같습니다.
[AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = false)]
public class ParentAttribute : Attribute
{
}
이것을 어떻게 작성합니까?
해결책
유형을 사용하십시오 .getProperties () 및 propertyInfo.getValue ()
T GetPropertyValue<T>(object o)
{
T value = default(T);
foreach (System.Reflection.PropertyInfo prop in o.GetType().GetProperties())
{
object[] attrs = prop.GetCustomAttributes(typeof(ParentAttribute), false);
if (attrs.Length > 0)
{
value = (T)prop.GetValue(o, null);
break;
}
}
return value;
}
다른 팁
이것은 나를 위해 작동합니다 :
public static object GetParentValue<T>(T obj) {
Type t = obj.GetType();
foreach (var prop in t.GetProperties()) {
var attrs = prop.GetCustomAttributes(typeof(ParentAttribute), false);
if (attrs.Length != 0)
return prop.GetValue(obj, null);
}
return null;
}
제휴하지 않습니다 StackOverflow