Общий метод для каста explicit и implicit operator

302
25 апреля 2017, 05:18

Есть 2 класса

class Class1
{
}
class Class2
{
    public static explicit operator Class2(Class1 value)
    {
        return new Class2();
    }
    public static implicit operator Class1(Class2 value)
    {
        return new Class1();
    }
}

У нас имеется объекты Type обоих классов.

Нужен общий метод умеющий кастовать в обе стороны (expression, emit...)

пример:

//метод конвертации. Возвращает object ибо у нас нет T
public object Convert(object source, Type targetType){
    //тут происходит преобразование source в Type 
    //source и type связаны expicit/implicit
}
var obj1=new Class1();
var obj2=Convert(obj1, typeof(Class2));
и наоборот
var obj1=new Class2();
var obj2=Convert(obj1, typeof(Class1));

explicit и implicit определены в одном классе, но каст с помощью них работает в обе стороны.

Что известно:

  1. Convert.ChangeType требует реализации интерфейса IConvertible, что не подходит
  2. C reflection можно, но он медленный.
READ ALSO
Событие активации анимации

Событие активации анимации

Есть код который активирует анимацию при двойном клике по form1, а нужно чтобы анимация срабатывала при двойном клике по компоненту webBrowser1 и по срабатыванию...

308
Книги по C# и другая литература

Книги по C# и другая литература

Вопросы о литературе по различным языкам программирования возникают очень частоЗдесь мы попробуем собрать лучшие ответы и рекомендации...

878
Создание и заполнение масива

Создание и заполнение масива

Здравствуйте, не могу понять как правильно сделать этоНеобходимо создать масив с элементами

274
Действия с BitmapImage

Действия с BitmapImage

Можно такие же действия сделать с BitmapImage?

377