Re[3]: Подскажите, как выбраться из такой ловушки
От: dobrik Израиль  
Дата: 16.08.12 12:30
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, hardcase, Вы писали:


А>>>Понятно, что в таком виде это работать не будет. А как правильно решить данную задачу?


H>>extern alias


А>Спасибо за ответ. А то я уж было подумал, что придется мутить с динамической загрузкой сборок. То есть хоть какой-то вариант у меня есть.


А>Но на самом деле дела обстоят значительно хуже. Каждая из сборок содержит несколько десятков классов и порядка сотни методов и, таким образом, весь мой код будет забит if'ами. Хотелось бы поступить проще: инстанцировать в некоторую переменную объект класса либо из одной, либо из другой сборки, типа такого:


А>
А>SomeType t = ( boolCondition ? new Assembly1::MySpace.MyObject() : new Assembly2::MySpace.MyObject());
А>

А>А дальше уже совершать все опирации с этим единственным объектом.

А>Можно ли каким-нибудь хитрым способом определить тип SomeType, чтоб переменной этого типа можно было присваивать объекты MyObject из обеих сборок и вызывать их методы?


А>PS. Краем уха слышал про "утиную" типизацию в C#. Мне кажется, это именно та ситуация, где такая типизация необходима. Т.е. хотелось бы определить SomeType как класс, реализующий заданный набор методов и чтоб переменной этого класса можно было присвоить объект любого класса, в котором эти методы реализованы. Что-нибудь подобное в C# есть?


public T GenerateProxy<T>()
{
return (T)Activator.CreateInstance(typeof(T));
}
dobrik
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.