.NET 4.x Привести один тип к другому. Тип универсальный, параметризируется другими типами - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток! Прошу помощи, что-то туплю. Под вечер или вообще Пытаюсь привести один тип к другому. Тип универсальный, параметризируется другими типами. Естественно, приведение не удается. Почему, увы, не понятно. Естественно, ниже - псевдокод. Попытка понять - что я делаю не так. Что удивительно, в другой части программы всё вроде получается и примерно (как мне кажется) в таких случаях.
private void Test()
{
    var stair = new StairA<MyObject, MyModel>();
    StairA<IStorageElement, IStorageElement> test1 = stair as StairA<IStorageElement, IStorageElement>;
        StairA<IStorageElement, IStorageElement> test2 = new StairA<MyObject, MyModel>();
        StairA<IStorageElement, IStorageElement> test3 = new StairB();
}
 
class StairA<TA, TB>
    where TA : class, IStorageElement
        where TB : class, IStorageElement
        {
 
        }

class StairB: StairA<MyObject, MyModel>
        {
            
        }
 
class MyObject: IStorageElement
        {
            
        }
 
class MyModel: IStorageElement
        {
 
        }
Спасибо за помощь! P.S.: Всё это тестируется в консольном приложении.

Решение задачи: «.NET 4.x Привести один тип к другому. Тип универсальный, параметризируется другими типами»

textual
Листинг программы
        private void Test()
        {
            var stair = new StairA<MyObject, MyModel>();
            IStairA<IStorageElement, IStorageElement> test1 = stair as IStairA<IStorageElement, IStorageElement>;
            IStairA<IStorageElement, IStorageElement> test2 = new StairA<MyObject, MyModel>();
            IStairA<IStorageElement, IStorageElement> test3 = new StairB();
        }
 
        interface IStairA<out TA, out TB>
            where TA : class, IStorageElement
            where TB : class, IStorageElement
        {
 
        }
 
        private class StairA<TA, TB> : IStairA<TA, TB>
            where TA : class, IStorageElement
            where TB : class, IStorageElement
        {
 
        }
 
        class StairB : IStairA<MyObject, MyModel>
        {
 
        }
 
        class MyObject : IStorageElement
        {
 
        }
 
        class MyModel : IStorageElement
        {
 
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.273 из 5
Похожие ответы