Шаблоны как параметры шаблона

Proga
Дата: 06.06.2014 12:19:03
Есть
abstract public class GridIBindingListRecordPrototype : IEditableObject
{//.... Реализация 
}

public abstract class ListRecordItem<T> : GridIBindingListRecordPrototype where T : EntityObject, new()
{//.... Реализация 

}

и менеджер
public class ListModelItemsManager<T> where T : GridIBindingListRecordPrototype, IDataSourceHelper, new()
{}

А хочется
public class ListModelItemsManager<T> where T : ListRecordItem<T>, IDataSourceHelper, new()
{
}
, но так нельзя. Как вывернуться?
Proga
Дата: 06.06.2014 12:19:47
через интерфейсы не предлагать, я и сам так могу.
Lelouch
Дата: 06.06.2014 15:32:18
Proga,

что именно нельзя?
Lelouch
Дата: 06.06.2014 15:38:41
Можно так:

1) public class ListModelItemsManager<T, U> where T : ListRecordItem<U>, IDataSourceHelper, new()
2) ListRecordItem<T> должен наследовать ListRecordItem<ListRecordItem<T>>
Lelouch
Дата: 06.06.2014 15:40:00
Изивиняюсь, второй вариант не подходит )
Lelouch
Дата: 06.06.2014 15:41:52
2й исправленный:
public class MyListRecordItem<T> : ListRecordItem<MyListRecordItem<T>> - вот такой тип можно будет подставить в генерик
Proga
Дата: 06.06.2014 16:44:08
Lelouch, предложенные варианты приводят к ошибке.
Lelouch
Дата: 06.06.2014 16:46:07
Proga,

Мой хрустальный шар пока еще не доставили, поэтому напишите, к каким ошибкам то?
Lelouch
Дата: 06.06.2014 16:49:23
вот так можно:

public class ListModelItemsManager<T, U>
where T : ListRecordItem<U>, IDataSourceHelper, new()
where U : EntityObject, new()
Proga
Дата: 06.06.2014 16:54:05
Lelouch
вот так можно:

public class ListModelItemsManager<T, U>
where T : ListRecordItem<U>, IDataSourceHelper, new()
where U : EntityObject, new()

допустим, а как тогда ты предлагаешь объявлять ListModelItemsManager, допустим
есть
public class BankRegistration : ListRecordItem<v_Template_Order>, IDataSourceHelper
{}