Owned Attribute??
От: DmitryMS  
Дата: 28.02.05 15:32
Оценка:
Есть атрибут, которому хочется иметь r/o свойство Asignee<PropertyName>, где Asignee — обьект, которому этот атрибут назначен, а PropertyName свойство этого обьекта. Я могу сделать owned attribute, но в классе Asignee при создании объекта я по понятным причинам не могу сказать:

//won't work
[MyAttribute(this)]
class Asignee
{
...
}

Имеет ли такой темплейт 'Мунхаузен' реализацию?

Спасибо.
Re: Owned Attribute??
От: V.Petrovski Беларусь  
Дата: 28.02.05 15:47
Оценка:
Здравствуйте, DmitryMS, Вы писали:

DMS>Есть атрибут, которому хочется иметь r/o свойство Asignee<PropertyName>, где Asignee — обьект, которому этот атрибут назначен, а PropertyName свойство этого обьекта. Я могу сделать owned attribute, но в классе Asignee при создании объекта я по понятным причинам не могу сказать:

Нельзя, потому, что аттрибут относиться к типу, а не к объекту.
А вот у типа ты можешь получить все его аттрибуты.
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
Re: Owned Attribute??
От: GarryIV  
Дата: 28.02.05 15:50
Оценка:
Hello, DmitryMS!

D> Есть атрибут, которому хочется иметь r/o свойство Asignee<PropertyName>,

D> где Asignee — обьект, которому этот атрибут назначен, а PropertyName
D> свойство этого обьекта. Я могу сделать owned attribute, но в классе
D> Asignee при создании объекта я по понятным причинам не могу сказать:

Атрибуты относятся не к объектам они относятся к классам, методам, сборкам etc. Короче ты хочешь странного и невозможного. Какая у тебя цель то?
Posted via RSDN NNTP Server 1.9
WBR, Igor Evgrafov
Re[2]: Owned Attribute??
От: DmitryMS  
Дата: 28.02.05 16:00
Оценка:
Замечательно, пусть относится. Но разве атрибут логичски нелзя связать с инстансом любого обьекта — статик, инстансе?? Скажем через ридонли свойство 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();

//read
er.MoveNext();

//assign
((TestAttribute)er.Current).Owner = this;
...

Конечно, коряво. жаль, что атрибут не имеет свойства Target.
Re[2]: Owned Attribute??
От: DmitryMS  
Дата: 28.02.05 16:11
Оценка:
Блин, ребята ну почему же странного? Что вы меня зомбируете Почему Атрибут не может иметь instance-specific information?

Я имею коллекцию классов, подписанных одним атрибутом. Атрибут предоставляет мне 90% нужной мне информации. Остальние 10% нугно добывать из инстанса. Вот я и подумал, как би било удобно добавить к атрибуту пару-другую рид-онли свойств, заполняемих по информации инстанса и брать атрибут 'as is'. Мне не хотелось ни писать дополнительный класс, содержаший ети свойства, ни модифицировать атрибути в процессе считивания.

Ну и скажите мне, я хочу нелогичного?
Re[3]: Owned Attribute??
От: GarryIV  
Дата: 28.02.05 16:27
Оценка:
Hello, DmitryMS!

D> Блин, ребята ну почему же странного? Что вы меня зомбируете Почему

D> Атрибут не может иметь instance-specific information?

Атрибут ОДИН а объектов МНОГО. О котором из объектов ты хочешь чтоб он хранил информацию?

D> Я имею коллекцию классов, подписанных одним атрибутом. Атрибут

D> предоставляет мне 90% нужной мне информации. Остальние 10% нугно
D> добывать из инстанса. Вот я и подумал, как би било удобно добавить к
D> атрибуту пару-другую рид-онли свойств, заполняемих по информации
D> инстанса и брать атрибут 'as is'. Мне не хотелось ни писать
D> дополнительный класс, содержаший ети свойства, ни модифицировать
D> атрибути в процессе считивания.

D> Ну и скажите мне, я хочу нелогичного?


Да. Атрибуты к остальным 10% не имеют никакого отношения. Инстансы могут использовать атрибуты. Атрибуты инстансы нет.
Posted via RSDN NNTP Server 1.9
WBR, Igor Evgrafov
Re[4]: Owned Attribute??
От: DmitryMS  
Дата: 28.02.05 16:59
Оценка:
here we go... почему бы атрибуту не иметь Read-only свойства object Target???

GIV>Да. Атрибуты к остальным 10% не имеют никакого отношения. Инстансы могут использовать атрибуты. Атрибуты инстансы нет.
Re[4]: Owned Attribute??
От: DmitryMS  
Дата: 28.02.05 17:00
Оценка:
Здравствуйте, 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% не имеют никакого отношения. Инстансы могут использовать атрибуты. Атрибуты инстансы нет.
Re[5]: Owned Attribute??
От: GarryIV  
Дата: 28.02.05 17:03
Оценка:
Hello, DmitryMS!

D> here we go... почему бы атрибуту не иметь Read-only свойства object

D> Target???

GIV>> Да. Атрибуты к остальным 10% не имеют никакого отношения. Инстансы

GIV>> могут использовать атрибуты. Атрибуты инстансы нет.

Как только в фрейворке появяться атрибуты с AttributeTargets.Instance так твоя мечта осуществиться
А пока забудь.
Posted via RSDN NNTP Server 1.9
WBR, Igor Evgrafov
Re[6]: Owned Attribute??
От: DmitryMS  
Дата: 28.02.05 17:14
Оценка:
kak vidish, ja nashel obhodnoj put'. prosto ne nugno referit' specificatsiu, bez povoda. that's lack of functionality, let's say that.
Re[3]: Owned Attribute??
От: V.Petrovski Беларусь  
Дата: 01.03.05 07:21
Оценка: 1 (1)
Здравствуйте, DmitryMS, Вы писали:

DMS>Конечно, коряво. жаль, что атрибут не имеет свойства Target.

Ты наверное не вкурсе, что при какждом вызове GetCustomAttributes аттрибуты создаюься заново.
Так что твои присвоения как мертвому припарка.

Так что для каждого экземпляра ты такой трюк не зделаешь.
Как вариант можно конечно объявить static поле.
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.