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