Подтвердить что ты не робот

Как ограничить несколько типичных типов?

Вот простой вопрос синтаксиса (я надеюсь), я знаю, как ограничить один общий тип, используя предложение where, но как ограничить два генерических типа?

Возможно, самый простой способ - записать то, что я думаю о синтаксисе.

public class GenericDaoGetByIdTests<TDao, TComponent> : BaseDaoTests 
  where TDao : IDao<TComponent>, TComponent : EDC2ORMComponent {
    public void GetByIdTest(int id) { }
}

Это дает мне ошибку. Кто-нибудь знает, что такое правильный синтаксис?

4b9b3361

Ответ 1

Используйте два слова "where", например, у меня есть объявление вроде этого:

public interface IParentNodeT<TChild, TSelf>
    where TChild : IChildNodeT<TSelf, TChild>, INodeT<TChild>
    where TSelf : IParentNodeT<TChild, TSelf>
{
    TChild childRoot { get; set; }
}

Ответ 2

Это должно работать:

public class GenericDaoGetByIdTests<TDao, TComponent> : BaseDaoTests 
  where TDao : IDao<TComponent> where TComponent : EDC2ORMComponent {
    public void GetByIdTest(int id) { }
}

вы просто повторяете, где.