Ich habe zwei Methoden, FollowForce() und AvoidForce(), die überladen sind, um entweder ein NavObject oder ein GameObject zu akzeptieren. Gibt es eine Möglichkeit, die Funktion Follow() zu vereinfachen, um beide Typen zu akzeptieren?C# generische Funktion für überladene Methoden
public void Follow(NavObject target){
if(isFollowing){Body.AddForce(FollowForce(target));}
if(isAvoiding){Body.AddForce(AvoidForce(target));}
}
public void Follow(GameObject target){
if(isFollowing){Body.AddForce(FollowForce(target));}
if(isAvoiding){Body.AddForce(AvoidForce(target));}
}
ich folgendes versucht, bekam aber cannot convert 'T' expression to type 'NavObject'
:
public void Follow <T>(T target){
if(isFollowing){Body.AddForce(FollowForce(target));}
if(isAvoiding){Body.AddForce(AvoidForce(target));}
}
Höchstwahrscheinlich, aber wir müssen sehen, wie die 'NavObject' und' GameObject' Objekte aussehen, sowie die 'FollowForce' und' AvoidForce' Methoden. – krillgar
Entweder benötigen Sie 'NavObject' und' GameObject', um von derselben Basisklasse zu erben (dann sollten 'FollowForce()' und 'AvoidForce()' einen Parameter vom Typ der Basisklasse akzeptieren). Oder Sie benötigen 'NavObject' und' GameObject', um dieselbe Schnittstelle zu implementieren (dann sollten 'FollowForce()' und 'AvoidForce()' einen Parameter vom Typ der Schnittstelle akzeptieren). – user1304444
Sie müssen FollowForce und AvoidForce in Ihrer Frage als Bearbeitung anzeigen. Was Sie wollen, ist vielleicht möglich, aber es hängt davon ab, was diese Methoden tun. Davon abgesehen würde ich einfach bei der überladenen Version bleiben. –