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

StackOverflow https://stackoverflow.com/questions/401174

  •  03-07-2019
  •  | 
  •  

Вопрос

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

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

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

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

Это было полезно?

Решение

Используйте два ключевых слова 'where', например, у меня есть такое объявление:

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top