C# implicit "однопроходный"?
От: karbofos42 Россия  
Дата: 25.11.16 05:21
Оценка:
Хотелось сделать такую штуку:
    class A
    {
        private string _value;

        public A(string value)
        {
            _value = value;
        }
        
        public override string ToString()
        {
            return _value;
        }

        static public implicit operator A (string value)
        {
            return new A(value);
        }

        static public implicit operator A(int value)
        {
            return new A(value.ToString());
        }
    }

    class B
    {
        private A _a;

        public B(A a)
        {
            _a = a;
        }

        public override string ToString()
        {
            return _a.ToString();
        }

        static public implicit operator B(A a)
        {
            return new B(a);
        }
    }

и потом писать:
B b;
b = "123"; // Тут чтобы строка неявно преобразовалась в A, а уже A неявно в B
b = 15;    // Аналогично. И так со всеми неявными преобразованиями, которые прописаны для A

Можно продублировать для всех типов преобразования из A в B и тупо прописать что-то типа:
static public implicit operator B(string a)
{
  return new B(a);
}

static public implicit operator B(int a)
{
  return new B(a);
}

но это как-то не увлекательно
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.