Возможно ли это в любом другом синтаксисе ???Сетевой общий тип с аргументом общего типа
interface IFoo<T<U>> where U: Bar, new() where T<U>: class, IFoo<T<U>>, new()
Это способ заставить общий аргумент для IFoo быть универсальным типом
class MyFoo<U>: IFoo<MyFoo<U>> where U: Bar, new()
Edited проиллюстрировать некоторые моменты:
- U является бар ... это будет быть организацией-заказчиком
- T is IFoo ... это был бы бизнес-объект Customer
- IFoo is interfa в.п. для некоторых бизнес объектов
- IFoo определяет
List<U> GetList(int compareToCustomerProperty)
Edited для иллюстрации удобства:
interface IFoo<T<U>> where U: Bar, new() where T<U>: class, IFoo<T<U>>, new()
T<U> DoOnce();
class MyFoo<U>: IFoo<MyFoo<U>> where U: Bar, new()
MyFoo<U> DoOnce(){return this;}
MyFoo<U> DoAgain(){return this;}//this is not in interface
class Test{
public Test(){
IFoo<MyFoo<Bar>> x = new MyFoo<Bar>();//Generics can come as parameters
x.
DoOnce()//this is from interface
DoAgain();//Can access this x's method cause of generic in IFoo
}
}
Я в настоящее время осуществить это, но я теряю родовое U.
Может жить без него ?? ? Всего
Я пропущу этот подход в какой-то момент своего кода ??? Неа!
Я только что пришел к точке, где я видел, это было бы неплохо иметь в своем коде (метод цепного между абстрактным & бетоном, больше свободы в дженерик)
спасибо за ответы!
Почему 'IFoo' уход как' U' ограничен? Какой прецедент? –
Привет @ M.Babcock ответил в 4-й точке редактирования –
Понял, но не должен 'IFoo' делегировать ответственность за создание экземпляра' U' 'T '? –