Внутренние свойства настраиваемого атрибута null C#

У меня проблема с пользовательским свойством. Это свойство, о котором идет речь:

[AttributeUsage(AttributeTargets.Property, Inherited = true, AllowMultiple = false)]
public class UIProperty : Attribute
{   
    public UIProperty(string property, Type target) { Property = property; TargetType = target; }

    private string property; 
    public string Property { get{return property;} set{property = value;} }

    private PropertyInfo targetProperty; 
    public PropertyInfo TargetProperty { get { return targetProperty; } protected set { targetProperty = value; } }

    private Type targetType; 
    public Type TargetType { get{ return targetType; } set{ targetType = value; } }

    private object target; public object Target { get{return target; } set{ target = value;} }

    public void SetTargetProperty(PropertyInfo targetPropertyInfo, object target)
    {
        targetProperty = targetPropertyInfo;
        this.target = target;
    }

    public object TargetValue 
    { 
        get { return targetProperty.GetValue(target, null); }
        set { if (!value.Equals(TargetValue)) targetProperty.SetValue(target, value, null); }
    }
}

Итак, если я установил пользовательский атрибут с помощью SetTargetProperty после удаления таким образом:

UIProperty uip = this.GetType (). GetProperty ("name"). GetCustomAttributes (typeof (UIProperty), true) [0] as UIProperty;

uip.SetTargetProperty (...);

Мой атрибут правильно установил свою цель и свои свойства. Ничто не является нулевым или не установлено. Но когда я иду, чтобы забрать это свойство в другом месте кода, все возвращается к нулю, как будто я никогда не устанавливал...

Атрибуты классов создаются, когда я получаю из PropertyInfo динамически, или им присваивается физический экземпляр свойства?

Что случилось?

1 ответ

Решение

Вы правы. Как указано в этой статье. Если вы хотите создать объект атрибута, вы должны вызвать либо GetCustomAttributes, либо GetCustomAttribute. Каждый раз, когда вызывается один из этих методов, он создает новые экземпляры указанного типа атрибута и устанавливает каждое из полей и свойств экземпляра на основе значений, указанных в коде.

Другие вопросы по тегам