Главная » C#, Компоненты » Класс SimplePropertyDescriptor

0

Как я уже говорил в разд. 4.5, все дескрипторы являются или внутренними, или абстрактными классами, поэтому использовать их "напрямую" не получится, Реализовывать свой дескриптор с нуля— занятие достаточно сложное. Класс TypeConverter содержит внутри себя интересный класс SimplePropertyDescriptor, реализующий большинство необходимых методов дескриптора. Это тоже абстрактный класс, но его наследнику достаточно реализовать всего два метода:

?   object Getvalue (object component) —возвращает значение свойства;

?   void SetValue (object conponent, object value)—устанавливает значение свойства.

К сожалению, реализовывать наследника этого класса можно только в рамках конвертера типа, т. к. этот класс объявлен как protected, но часто этого вполне достаточно. Пример реализации показан в листинге 8.11.

Листинг 811 Реализация наследника класса SimpleFicpert-yDoocriptor

public class ExampleTypeConverter : TypeConverter

{

sealed class CustoinPropertyDescriptor t SimplePropertyDescriptor

{

private readonly PropertyDescriptor property;

public CustoinPropertyDescriptor (PropertyDescriptor property, AttributeП attributes) : base(property.ComponentType, property.Name, property.PropertyType, attributes)

this.property = property;

// Реализация GetValue (возвращает значение свойства) public override object GetValue(object component)

return property.GetValue(component);

// Реализация SetValue (устанавливает значение свойства) public override void SetValue(object component, object value)

property.SetValue(component, value);

Литература:

Агуров П. В. C#. Разработка компонентов в MS Visual Studio 2005/2008. – СПб.: БХВ-Петербург, 2008. — 480 е.: ил.

По теме:

  • Комментарии