Rambler's Top100
Главная
Новости
Статьи
Форумы
Книги
Коды
Сообщество
Блоги
О нас
 

Логин

Email:
  Пароль:

Войти
Зарегистрироваться
Забыл пароль

Поиск

 Искать :
 
Вперед

Сообщение

Нахлобуч


Известный Болтун

Зарегистрирован:
11 April 2007
Сообщения: 723
Примеры кода: 0
 

Re: [dev] octalforty Waffle -- форум

21 February 2008 16:51  


C...R...a...S...HА у Вас получается наоборот.
сначала вы скрываете конкретную реализацию, а потом динамически пытаетесь ее получить.
Ну как вам будет угодно.

Вот живой пример кода. ReferenceItemConverterBase -- базовый класс для классов-конвертеров, преобразующих объекты из одной объектной модели (той, которая "богатая" -- со связями, коллекциями и пр.) в объекты, предназначенные для сериализации в XML (то есть, совершенно плоские и неприметные). Convert() -- метод, оперирующий неким абстрактным объектом и умеющий работать с общими свойствами таких объектов.

public abstract class ReferenceItemConverterBase
{
private void Convert(IBusinessObject businessObject, ReferenceItem referenceItem)
{
referenceItem.ID = businessObject.ID;

if(businessObject is IBusinessObjectWithNames)
{
IBusinessObjectWithNames businessObjectWithNames =
(IBusinessObjectWithNames)businessObject;

referenceItem.RussianName = businessObjectWithNames.RussianName;
referenceItem.EnglishName = businessObjectWithNames.EnglishName;
} // if

if(businessObject is IBusinessObjectWithStandardKey)
{
IBusinessObjectWithStandardKey businessObjectWithStandardKey =
(IBusinessObjectWithStandardKey)businessObject;

referenceItem.StandardKey = businessObjectWithStandardKey.StandardKey;
} // if
}
}

Например, есть у нас объект GlobalMeal (тип питания; мы тут в туризме вовсю), который не реализует IBusinessObjectWithStandardKey (просто потому что нет в этом смысла), а есть еще Currency, который как раз таки реализует IBusinessObjectWithStandardKey, и свойство StandardKey возвращает ISO-код валюты. Конвертеры и для того, и для другого класса наследуются от ReferenceItemConverterBase, который совершенно спокойно обрабатывает оба типа объектов.
Наверх
  



Общие вопросы программирования на ASP.NET

 [dev] octalforty Waffle -- форумНахлобуч  21 February 2008 13:16
 Re: [dev] octalforty Waffle -- форумНахлобуч  22 February 2008 15:38
 Re: [dev] octalforty Waffle -- форумC...R...a...S...H  22 February 2008 16:01
 Re: [dev] octalforty Waffle -- форумSa  22 February 2008 15:21
 Re: [dev] octalforty Waffle -- форумГость_М  21 February 2008 21:54
 Re: [dev] octalforty Waffle -- форумSa  21 February 2008 21:24
 Re: [dev] octalforty Waffle -- форумmaXmo  21 February 2008 19:42
 Re: [dev] octalforty Waffle -- форумГость_М  21 February 2008 17:49
 Re: [dev] octalforty Waffle -- форумНахлобуч  21 February 2008 17:20
 Re: [dev] octalforty Waffle -- форумC...R...a...S...H  21 February 2008 17:49
 Re: [dev] octalforty Waffle -- форумНахлобуч  21 February 2008 17:09
 Re: [dev] octalforty Waffle -- форумГость_М  21 February 2008 17:07
 Re: [dev] octalforty Waffle -- форумНахлобуч  21 February 2008 16:51
 Re: [dev] octalforty Waffle -- форумC...R...a...S...H  21 February 2008 17:14
 Re: [dev] octalforty Waffle -- форумНахлобуч  21 February 2008 16:37
 Re: [dev] octalforty Waffle -- форумГость_М  21 February 2008 15:41
 Re: [dev] octalforty Waffle -- форумНахлобуч  21 February 2008 15:21
 Re: [dev] octalforty Waffle -- форумC...R...a...S...H  21 February 2008 15:34
 Re: [dev] octalforty Waffle -- форумНахлобуч  21 February 2008 15:08
 Re: [dev] octalforty Waffle -- форумC...R...a...S...H  21 February 2008 15:16
 Re: [dev] octalforty Waffle -- форумГость_М  21 February 2008 15:05
 Re: [dev] octalforty Waffle -- форумНахлобуч  21 February 2008 14:42
 Re: [dev] octalforty Waffle -- форумC...R...a...S...H  21 February 2008 15:00
 Re: [dev] octalforty Waffle -- форумНахлобуч  21 February 2008 14:25
 Re: [dev] octalforty Waffle -- форумC...R...a...S...H  21 February 2008 14:34
 [dev] octalforty Waffle -- форумC...R...a...S...H  21 February 2008 14:19
 
Наш Киев

Apartments for Rent

Rambler's Top100
Рейтинг@Mail.ru
Идея: Dimon aka Manowar Программирование: Dimon aka Manowar Дизайн: Dan Lebedev
Хостинг от компании Parking.ru
Карта сайта