C#: kann Nicht erstellen Sie eine Instanz der abstrakten Klasse oder Schnittstelle
ich bin mit einem web-service aus HotelsPro und versuchen, eine Instanz zu schaffen, aber es gibt mir eine Fehlermeldung:
Kann nicht erstellen Sie eine Instanz der abstrakten Klasse oder Schnittstelle
'HotelsPro.hotelsProSvc.b2bHotelSOAPPortType'
hier ist, was ich versuche zu tun.
FORM1.CS
hotelsProSvc.b2bHotelSOAPPortType a = new b2bHotelSOAPPortType();
getAvailableHotelResponse getres = new getAvailableHotelResponse();
getres=a.getAvailableHotel(apiKey, "A990", checkIn, checkOut, "EUR", "UK", false, rooms, f);
Abstract classes have the following features: An abstract class cannot be instantiated.
- MSDN- Ich werde vorschlagen, Sie zu erfahren Sie mehr über abstrakte Klassen und Vererbung
- MSDN hat alle diese, auch in Ihrer eigenen Sprache (weil Englisch nicht Ihre erste Sprache). Bitte starten Sie durch das Lesen der Dokumentation für die Sprache, die Sie mit der Programmierung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In C# ist es nicht möglich, erstellen Sie eine Instanz einer abstrakten Klasse oder Schnittstelle.
b2bHotelSOAPPortType ist entweder ein interface oder eine abstrakte Klasse. Wenn Sie beabsichtigen, auf ein neues Objekt erstellen auf diese Weise (anstatt der Verwendung von dependency-injection zum Beispiel), dann müssen Sie finden Sie eine konkrete Klasse, die b2bHotelSOAPPortType und
new
dass.Beispielsweise
vorausgesetzt Concreteb2bHotelSOAPPortType implementiert b2bHotelSOAPPortType.
Ein besserer Ansatz wäre, um die Beziehung zwischen diesen beiden Klassen in ein DI-container wie Autofaq.
Wenn b2bHotelSOAPPortType ist ein interface, dann würde es umgesetzt werden, damit
wenn es sich um eine abstrakte Klasse dann so
Was Sie brauchen, ist zu finden eine Klasse, die entweder implementiert b2bHotelSOAPPortType direkt oder indirekt. Wenn es implementiert es direkt wird es so Aussehen
Wenn Sie mithilfe von Visual Studio werden Sie in der Lage sein, um herauszufinden, welche Klassen diese Schnittstelle implementieren oder die abstrakte Klasse ziemlich leicht.
Abstrakte Klassen oder interfaces können nicht instanziert werden.
Haben Sie instantiieren einer Klasse erbt von dieser Klasse (oder die diese Schnittstelle implementiert).