.NET 4.x Привести один тип к другому. Тип универсальный, параметризируется другими типами - C#
Формулировка задачи:
Доброго времени суток!
Прошу помощи, что-то туплю. Под вечер или вообще
Пытаюсь привести один тип к другому. Тип универсальный, параметризируется другими типами.
Естественно, приведение не удается. Почему, увы, не понятно.
Естественно, ниже - псевдокод. Попытка понять - что я делаю не так.
Что удивительно, в другой части программы всё вроде получается и примерно (как мне кажется) в таких случаях.
Спасибо за помощь!
P.S.: Всё это тестируется в консольном приложении.
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 { }
Решение задачи: «.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 { }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д