Есть ли способ ограничить два параметра типа, чтобы быть обязательно разными? - PullRequest
0 голосов
/ 15 ноября 2018

Я создаю класс MyClass<T1, T2> : IEnumerable<Tuple<T1, T2>>, но для того, чтобы он имел какой-либо смысл в контексте моего приложения, я должен убедиться, что T1 != T2.

Существует ли правильный способ ограниченияT1 и T2 так что они не одного типа?

1 Ответ

0 голосов
/ 15 ноября 2018

Если вы знаете, какими типами они должны быть, вы можете использовать ограничение типа where:

class MyClass<T1, T2> : IEnumerable<Tuple<T1, T2>>
    where T1 : MyClass1
    where T2 : MyClass2

Но нет никакого способа разрешить им быть любым классом,но следите за тем, чтобы они не были равны.Возможно, вам придется создать исключение в конструкторе, может быть:

if (typeof(T1) == typeof(T2)) {
    throw new Exception("Types must not be the same.");
}
...