Czytając to , dowiedziałem się, że można zezwolić metodzie na akceptowanie parametrów wielu typów, czyniąc ją metodą ogólną. W tym przykładzie poniższy kod jest używany z ograniczeniem typu, aby zapewnić, że „U” to IEnumerable<T>.
public T DoSomething<U, T>(U arg) where U : IEnumerable<T>
{
return arg.First();
}
Znalazłem więcej kodu, który pozwolił na dodanie wielu ograniczeń typu, takich jak:
public void test<T>(string a, T arg) where T: ParentClass, ChildClass
{
//do something
}
Jednak ten kod wydaje się wymuszać, że argmusi to być zarówno typ, jak ParentClass i ChildClass . Chcę tylko powiedzieć, że argument może być rodzajem ParentClass lub ChildClass w następujący sposób:
public void test<T>(string a, T arg) where T: string OR Exception
{
//do something
}
Twoja pomoc jest mile widziana jak zawsze!
where T : string, ponieważ stringjest to klasa zapieczętowana . Jedyną przydatną rzeczą, jaką możesz zrobić, jest zdefiniowanie przeciążeń dla stringi T : Exception, jak wyjaśnił @ Botz3000 w jego odpowiedzi poniżej.
argsą metody zdefiniowane przez object- dlaczego więc po prostu nie usunąć typów generycznych z obrazu i utworzyć typ arg object? Co zyskujesz?