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

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

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

Доброго времени суток! Прошу помощи, что-то туплю. Под вечер или вообще Пытаюсь привести один тип к другому. Тип универсальный, параметризируется другими типами. Естественно, приведение не удается. Почему, увы, не понятно. Естественно, ниже - псевдокод. Попытка понять - что я делаю не так. Что удивительно, в другой части программы всё вроде получается и примерно (как мне кажется) в таких случаях.
Листинг программы
  1. private void Test()
  2. {
  3. var stair = new StairA<MyObject, MyModel>();
  4. StairA<IStorageElement, IStorageElement> test1 = stair as StairA<IStorageElement, IStorageElement>;
  5. StairA<IStorageElement, IStorageElement> test2 = new StairA<MyObject, MyModel>();
  6. StairA<IStorageElement, IStorageElement> test3 = new StairB();
  7. }
  8. class StairA<TA, TB>
  9. where TA : class, IStorageElement
  10. where TB : class, IStorageElement
  11. {
  12. }
  13.  
  14. class StairB: StairA<MyObject, MyModel>
  15. {
  16. }
  17. class MyObject: IStorageElement
  18. {
  19. }
  20. class MyModel: IStorageElement
  21. {
  22. }
Спасибо за помощь! P.S.: Всё это тестируется в консольном приложении.

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

textual
Листинг программы
  1.         private void Test()
  2.         {
  3.             var stair = new StairA<MyObject, MyModel>();
  4.             IStairA<IStorageElement, IStorageElement> test1 = stair as IStairA<IStorageElement, IStorageElement>;
  5.             IStairA<IStorageElement, IStorageElement> test2 = new StairA<MyObject, MyModel>();
  6.             IStairA<IStorageElement, IStorageElement> test3 = new StairB();
  7.         }
  8.  
  9.         interface IStairA<out TA, out TB>
  10.             where TA : class, IStorageElement
  11.             where TB : class, IStorageElement
  12.         {
  13.  
  14.         }
  15.  
  16.         private class StairA<TA, TB> : IStairA<TA, TB>
  17.             where TA : class, IStorageElement
  18.             where TB : class, IStorageElement
  19.         {
  20.  
  21.         }
  22.  
  23.         class StairB : IStairA<MyObject, MyModel>
  24.         {
  25.  
  26.         }
  27.  
  28.         class MyObject : IStorageElement
  29.         {
  30.  
  31.         }
  32.  
  33.         class MyModel : IStorageElement
  34.         {
  35.  
  36.         }

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


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

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

11   голосов , оценка 4.273 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы