Прочитав это , я узнал, что можно разрешить методу принимать параметры нескольких типов, сделав его универсальным методом. В этом примере следующий код используется с ограничением типа, чтобы гарантировать, что «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? Что вы получаете?