Als ich dies las , erfuhr ich, dass es möglich war, einer Methode zu erlauben, Parameter mehrerer Typen zu akzeptieren, indem sie zu einer generischen Methode gemacht wurde. Im Beispiel wird der folgende Code mit einer Typbeschränkung verwendet, um sicherzustellen, dass "U" ein ist IEnumerable<T>
.
public T DoSomething<U, T>(U arg) where U : IEnumerable<T>
{
return arg.First();
}
Ich habe mehr Code gefunden, mit dem mehrere Typeinschränkungen hinzugefügt werden können, z.
public void test<T>(string a, T arg) where T: ParentClass, ChildClass
{
//do something
}
Dieser Code scheint jedoch zu erzwingen, dass arg
dies sowohl eine Art von ParentClass
als auch sein muss ChildClass
. Was ich tun möchte, ist zu sagen, dass arg eine Art ParentClass
oder ChildClass
auf folgende Weise sein könnte:
public void test<T>(string a, T arg) where T: string OR Exception
{
//do something
}
Ihre Hilfe wird wie immer geschätzt!
where T : string
, ebenso string
wie eine versiegelte Klasse. Das einzig Nützliche, was Sie tun können, ist das Definieren von Überladungen für string
und T : Exception
, wie von @ Botz3000 in seiner Antwort unten erläutert.
arg
die durch definiert sind. object
Warum also nicht einfach Generika aus dem Bild entfernen und den Typ festlegen arg
object
? Was gewinnen Sie?