Есть атрибут, которому хочется иметь r/o свойство Asignee<PropertyName>, где Asignee — обьект, которому этот атрибут назначен, а PropertyName свойство этого обьекта. Я могу сделать owned attribute, но в классе Asignee при создании объекта я по понятным причинам не могу сказать:
//won't work
[MyAttribute(this)]
class Asignee
{
...
}
Здравствуйте, DmitryMS, Вы писали:
DMS>Есть атрибут, которому хочется иметь r/o свойство Asignee<PropertyName>, где Asignee — обьект, которому этот атрибут назначен, а PropertyName свойство этого обьекта. Я могу сделать owned attribute, но в классе Asignee при создании объекта я по понятным причинам не могу сказать:
Нельзя, потому, что аттрибут относиться к типу, а не к объекту.
А вот у типа ты можешь получить все его аттрибуты.
Hello, DmitryMS!
D> Есть атрибут, которому хочется иметь r/o свойство Asignee<PropertyName>, D> где Asignee — обьект, которому этот атрибут назначен, а PropertyName D> свойство этого обьекта. Я могу сделать owned attribute, но в классе D> Asignee при создании объекта я по понятным причинам не могу сказать:
Атрибуты относятся не к объектам они относятся к классам, методам, сборкам etc. Короче ты хочешь странного и невозможного. Какая у тебя цель то?
Замечательно, пусть относится. Но разве атрибут логичски нелзя связать с инстансом любого обьекта — статик, инстансе?? Скажем через ридонли свойство object Target{} ? Вы говорите нельзя потому что нельзя. Обьект нельзя менять, потому что он ридонли
Вот я тут придумал "решeние":
1. Сделать Owner'a атрибута доступным для чтения/записи.
2. Внутри конструктора target класса выставлять значение Owner'а через рефлекшн.
...
//there's only 1 attribute, for the test purpose only
IEnumerator er = this.GetType().GetCustomAttributes(false).GetEnumerator();
Блин, ребята ну почему же странного? Что вы меня зомбируете Почему Атрибут не может иметь instance-specific information?
Я имею коллекцию классов, подписанных одним атрибутом. Атрибут предоставляет мне 90% нужной мне информации. Остальние 10% нугно добывать из инстанса. Вот я и подумал, как би било удобно добавить к атрибуту пару-другую рид-онли свойств, заполняемих по информации инстанса и брать атрибут 'as is'. Мне не хотелось ни писать дополнительный класс, содержаший ети свойства, ни модифицировать атрибути в процессе считивания.
Hello, DmitryMS!
D> Блин, ребята ну почему же странного? Что вы меня зомбируете Почему D> Атрибут не может иметь instance-specific information?
Атрибут ОДИН а объектов МНОГО. О котором из объектов ты хочешь чтоб он хранил информацию?
D> Я имею коллекцию классов, подписанных одним атрибутом. Атрибут D> предоставляет мне 90% нужной мне информации. Остальние 10% нугно D> добывать из инстанса. Вот я и подумал, как би било удобно добавить к D> атрибуту пару-другую рид-онли свойств, заполняемих по информации D> инстанса и брать атрибут 'as is'. Мне не хотелось ни писать D> дополнительный класс, содержаший ети свойства, ни модифицировать D> атрибути в процессе считивания.
D> Ну и скажите мне, я хочу нелогичного?
Да. Атрибуты к остальным 10% не имеют никакого отношения. Инстансы могут использовать атрибуты. Атрибуты инстансы нет.
here we go... почему бы атрибуту не иметь Read-only свойства object Target???
GIV>Да. Атрибуты к остальным 10% не имеют никакого отношения. Инстансы могут использовать атрибуты. Атрибуты инстансы нет.
Здравствуйте, GarryIV, Вы писали:
GIV>Hello, DmitryMS!
D>> Блин, ребята ну почему же странного? Что вы меня зомбируете Почему D>> Атрибут не может иметь instance-specific information?
GIV>Атрибут ОДИН а объектов МНОГО. О котором из объектов ты хочешь чтоб он хранил информацию?
O TOM, KOTOROMU ON NAZNACHEN.
D>> Я имею коллекцию классов, подписанных одним атрибутом. Атрибут D>> предоставляет мне 90% нужной мне информации. Остальние 10% нугно D>> добывать из инстанса. Вот я и подумал, как би било удобно добавить к D>> атрибуту пару-другую рид-онли свойств, заполняемих по информации D>> инстанса и брать атрибут 'as is'. Мне не хотелось ни писать D>> дополнительный класс, содержаший ети свойства, ни модифицировать D>> атрибути в процессе считивания.
D>> Ну и скажите мне, я хочу нелогичного?
GIV>Да. Атрибуты к остальным 10% не имеют никакого отношения. Инстансы могут использовать атрибуты. Атрибуты инстансы нет.
Hello, DmitryMS!
D> here we go... почему бы атрибуту не иметь Read-only свойства object D> Target???
GIV>> Да. Атрибуты к остальным 10% не имеют никакого отношения. Инстансы GIV>> могут использовать атрибуты. Атрибуты инстансы нет.
Как только в фрейворке появяться атрибуты с AttributeTargets.Instance так твоя мечта осуществиться
А пока забудь.
Здравствуйте, DmitryMS, Вы писали:
DMS>Конечно, коряво. жаль, что атрибут не имеет свойства Target.
Ты наверное не вкурсе, что при какждом вызове GetCustomAttributes аттрибуты создаюься заново.
Так что твои присвоения как мертвому припарка.
Так что для каждого экземпляра ты такой трюк не зделаешь.
Как вариант можно конечно объявить static поле.