Здравствуйте!
Не расскажет ли кто-нибудь, для чего нужны в BLToolkit эти самые атрибуты. С парой примеров хотя бы
Здравствуйте, LLI, Вы писали:
LLI>Не расскажет ли кто-нибудь, для чего нужны в BLToolkit эти самые атрибуты. С парой примеров хотя бы
Если в качестве поля объекта использовать структуру, то этими атрибутами можно явно задавать методы, выполняющие соответствующие функции.
Здравствуйте, IT, Вы писали:
IT>Если в качестве поля объекта использовать структуру, то этими атрибутами можно явно задавать методы, выполняющие соответствующие функции.
Спасибо за ответ. Т.е. Вы именно для этого делали эти атрибуты?
Тогда позвольте ещё вопрос. Как понять
этотАвтор: Denis K.
Дата: 21.03.08
код в контексте BLToolkit'a (структуры-то нет, простой string):
public class MyStringValue
{
public MyStringValue()
{
Value = "";
}
public MyStringValue(string value)
{
Value = value;
}
string _value = "";
[SetValue, GetValue]
public string Value
{
get { return _value; }
set { _value = value != null ? value : ""; }
}
}
[GlobalInstanceType(typeof(string), typeof(EditableValue<MyStringValue>), "")]
public abstract class BizEnt : EditableObject
{
public abstract string Str { get; set; }
}
static void Main()
{
BizEnt bz = TypeAccessor<BizEnt>.CreateInstanceEx(); // здесь бросается exception
}
ЗЫ. пока понял, что в этом примере это именно для обеспечения нормальной подмены «string» на «EditableValue<MyStringValue>». Это так?
Здравствуйте, LLI, Вы писали:
LLI>Спасибо за ответ. Т.е. Вы именно для этого делали эти атрибуты?
LLI>Тогда позвольте ещё вопрос. Как понять этотАвтор: Denis K.
Дата: 21.03.08
код в контексте BLToolkit'a (структуры-то нет, простой string):
Это абстрактный класс. Когда он создаётся, то внутренняя реализация поля Str делается через MyStringValue. Это указывается атрибутом [GlobalInstanceType(typeof(string), typeof(EditableValue<MyStringValue>), "")]. В результате для Str генерируется что-то вроде:
MyStringValue _str;
public overrider string Str
{
get { return _str.Value; }
set { _str.Value = value; }
}
LLI>ЗЫ. пока понял, что в этом примере это именно для обеспечения нормальной подмены «string» на «EditableValue<MyStringValue>». Это так?
Так.