Читаючи це , я дізнався, що можна дозволити методу приймати параметри декількох типів, зробивши його загальним методом. У прикладі наступний код використовується з обмеженням типу, щоб переконатися, що "U" є an 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
. Що я хочу зробити, це сказати, що аргумент може бути типом 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
? Що ти набираєш?