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 argdies 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 stringwie eine versiegelte Klasse. Das einzig Nützliche, was Sie tun können, ist das Definieren von Überladungen für stringund T : Exception, wie von @ Botz3000 in seiner Antwort unten erläutert.
argdie durch definiert sind. objectWarum also nicht einfach Generika aus dem Bild entfernen und den Typ festlegen arg object? Was gewinnen Sie?