Автоматический генерирующий класс обертки в C # с использованием композиции

Это должно быть просто, но я не могу ничего не найти.

У меня есть класс в одной сборке (общая библиотека - это набор Классы прокси для веб-службы) У меня есть класс в другой сборке (веб-проект)

. Существует класс под названием «профиль», который находится в прокси-узлах. Существует множество классов, которые «используют» профиль в веб-проекте. Когда пользователь не вошел в систему, используется универсальный метод.

Следуя принципу «разделения проблем» .... Прокси-монтаж используется другими проектами и занимается только вещами веб-службы. Веб-проект просто есть веб-материалы в тудах

Однако сейчас есть эта необходимость в «GenericProfile» - подумайте об этом как «гостевого пользователя».

Логическая вещь, которую необходимо сделать, это создать интерфейс, называемый iProfile и вызвать из них обоих классов. Но это создало бы круговую зависимость между двумя собраниями.

Следующая лучшая идея состоит в том, чтобы создать 3-я сборку под названием MyInterfaces и поставить IPROFile там - но это вызывает нарушение разделения принципов рассматриваемых проблем на мой взгляд. По крайней мере, один экземпляр этой проблемы кажется слишком маленькой причиной для приготовления лишнего модуля в моем решении.

Введите класс обертки - или класс композитной обертки (все, что вы хотите назвать его)

Я ищу что-то, что заканчивается, создавая что-то вроде этого ниже. Есть ли инструмент или визуальное расширение студии, которое сделает это? Может быть .tt файл?

namespace WebProject
{
   public interface IProfile
   {...}

   class MyWrapperClass : IProfile
   {
       Proxy.Profile _profile;

       public MyWrapperClass(Proxy.Profile proxy)
       {
           _profile = proxy;
       }

       public string IProfile.Property1{ get { return _profile.Property1; } set { _profile.Property1 = value; } }
       public string IProfile.Property2{ get { return _profile.Property2; } set { _profile.Property2 = value; } }
       public string IProfile.Property3{ get { return _profile.Property3; } set { _profile.Property3 = value; } }
   }

}
10
задан 010110110101 31 August 2011 в 03:28
поделиться