Я ищу C # альтернативу C ++ typedefs или классам черт в конкретном случае. Я знаю, что нет прямых эквивалентов, но, возможно, есть некоторые альтернативные решения для этой конкретной проблемы?
Вот что я пытаюсь сделать. Я пишу рамки, где есть три связанных типа. Вид, резервное хранилище и фабрика. Будет несколько реализаций всех трех интерфейсов. Между представлением и фабрикой существует соотношение 1-1, а между представлением и хранилищем - 1-N. Конкретный импл. фреймворка выглядит примерно так:
Storage : IStorage<int> ...
View : IView<Storage> ... // And IView<T> : IViewNonGeneric further up..
Factory : IFactory<Storage> {
// This needs to take a concrete storage type as arg
IViewNonGeneric CreateView(Storage s) ...
Storage CreateStorage() ...
}
Класс View является наиболее важным классом для пользователей платформы; остальные - это детали реализации. Из-за этого казалось бы более естественным определять Фабрику в терминах класса View (а не в терминах Storage). В C ++ это было бы просто, просто добавьте typedef к представлению и используйте его на фабрике, например, так:
class IView<typename T> { typedef T TStorage; ...
class IFactory<typename T> {
IViewNonGeneric CreateView(typename T::TStorage s) ...
В C # у нас явно нет классов typedefs или traits. Есть ли другой способ добиться желаемого эффекта? То есть можно ли использовать View как универсальный параметр для Factory и получить конкретный тип Source из View?