2014-02-12 5 views
1

Есть ли способ переопределить сеттер и getter свойства auto с атрибутом?Override set setter и getter

так:

[CustomAttribute] 
public int Value { get; set; } 

...

public class CustomAttibute : Attribute 
{ 
    public override NotExistingPropertySetter(object value) 
    {  
     if (((int)value) < 10) 
     { 
      value = 10; 
     } 
    } 
} 

ответ

3

No. Атрибут никогда не "выполняется". Вам нужно будет построить конструкцию, которая ищет атрибут и что-то сделает, если она будет найдена.

AoP (аспектно-ориентированное программирование) в .NET возможно только с использованием стороннего программного обеспечения, такого как PostSharp.

+0

https://github.com/Fody/Fody другой вариант. –

+0

Кроме того, вы можете обнаружить, что если ваша цель состоит в том, чтобы не писать один и тот же код свойства более одного раза, вы можете использовать неправильную абстракцию. – Magus

1

Я считаю, что это будет достичь этого с АОП enter image description here

+1

Хотя это не совсем так, SO поддерживает код напрямую, а предложения обычно лучше читаются без изображения в середине четырехбуквенного слова. (Или любое слово, если на то пошло!) Мне нравится подсветка синтаксиса. – Magus

+0

Вы пропустили тот факт, что это PostSharp, сторонний инструмент, который может не иметь оригинальный плакат. В конце концов, это не совсем дешево. – nvoigt