Ich versuche, eine Funktion zu einer vorhandenen Codebasis in C# hinzuzufügen und eine API aufzurufen, sagen wir MyAPI(arg1,arg2). Ich habe ein Interface, nennen wir es IProvider, das eine Reihe von Client-seitigen API-Definitionen hat. Ich habe zwei Client-Proxy-Klassen - Provider und ProviderNew, die einige Wrapper-Implementierungen für die APIs haben - innerhalb jeder dieser Wrapper-Funktionen (für APIs) rufen wir letztendlich die Service-API auf, die auf einem entfernten Server gehostet ist. Nur unter der ProviderNew (nicht Provider) Projekt-Klasse - unter Serviceverweisen - sehe ich, dass MyAPI in WSDL, xsd-Dateien definiert ist (oder automatisch generiert wird, da ich nicht sicher bin, wie diese Dateien erstellt werden). Darüber hinaus sehe ich eine references.cs-Datei nur für ProviderNew, die einige Definitionen für MyAPI enthält. Diese Dinge deuten eindeutig darauf hin, dass nur ProviderNew den Client-seitigen Proxy-Code für MyAPI implementiert.
Mein Problem jetzt ist, dass da IProvider die MyAPI-Signatur definiert, das System erwartet, dass beide implementierenden Klassen (Provider und ProviderNew) den Client-Code für MyAPI implementieren, was jedoch nicht der Fall ist, da nur ProviderNew Definitionen für MyAPI hat. Wenn ich versuche, den MyAPI-Client-Code nur in Provider.cs zu implementieren, erhalte ich einen Fehler:
Provider.ProviderServiceReference.ProviderServiceClient enthält keine Definition für 'MyAPI' und keine Erweiterungsmethode 'MyAPI', die ein erstes Argument vom Typ 'Provider.ProviderServiceReference.ProviderServiceClient' akzeptiert, konnte gefunden werden (fehlt Ihnen eine Verwendungsrichtlinie oder eine Assembly-Verweis?) MyPath..\Provider.cs
Aber wenn ich sie in Provider.cs nicht implementiere, erhalte ich einen Fehler (Dies ist ein klassischer Fall, dass jede Klasse (wenn es mehrere Implementierungen gibt), die ein Interface implementiert, alle ihre Funktionen individuell von selbst implementieren sollte und nicht eine Teilmenge von Funktionen.)
'Provider' implementiert keine Schnittstellenmember 'IProvider.MyAPI(int, int)' MyPath ...Provider.cs
Ich habe mein Bestes gegeben, um dies so deutlich wie möglich zu machen, lassen Sie mich für weitere Klarheit wissen.
Wie gehe ich jetzt vor? Irgendwelche Vorschläge?