Прочитав это , я узнал, что можно разрешить методу принимать параметры нескольких типов, сделав его универсальным методом. В этом примере следующий код используется с ограничением типа, чтобы гарантировать, что «U» является IEnumerable<T>
.
public T DoSomething<U, T>(U arg) where U : IEnumerable<T>
{
return arg.First();
}
Я нашел еще код, который позволил добавить несколько ограничений типа, например:
public void test<T>(string a, T arg) where T: ParentClass, ChildClass
{
//do something
}
Однако этот код, похоже, arg
требует, чтобы они были как типа, так ParentClass
и ChildClass
. Я хочу сказать, что arg может быть типом ParentClass
или ChildClass
следующим образом:
public void test<T>(string a, T arg) where T: string OR Exception
{
//do something
}
Ваша помощь как всегда ценится!
where T : string
, так как string
это закрытый класс. Единственная полезная вещь, которую вы могли бы сделать, это определить перегрузки для string
и T : Exception
, как объяснил @ Botz3000 в своем ответе ниже.
arg
это те, которые определены object
- так почему бы просто не удалить обобщенные элементы из рисунка и создать тип arg
object
? Что вы получаете?