我正在使用来自HotelsPro的网络服务并尝试创建一个实例,但它给了我一个错误:
无法创建抽象类或接口的实例 'HotelsPro.hotelsProSvc.b2bHotelSOAPPortType'
这是我正在尝试做的事情。
Form1.cs的
hotelsProSvc.b2bHotelSOAPPortType a = new b2bHotelSOAPPortType();
getAvailableHotelResponse getres = new getAvailableHotelResponse();
getres=a.getAvailableHotel(apiKey, "A990", checkIn, checkOut, "EUR", "UK", false, rooms, f);
答案 0 :(得分:5)
在C#中,无法创建抽象类或接口的实例
b2bHotelSOAPPortType是接口或抽象类。如果您打算以这种方式创建一个新对象(而不是使用依赖注入),那么您必须找到一个实现b2bHotelSOAPPortType和new
的具体类。
例如
hotelsProSvc.b2bHotelSOAPPortType a = new Concreteb2bHotelSOAPPortType();
假设Concreteb2bHotelSOAPPortType实现了b2bHotelSOAPPortType。
更好的方法是在像Autofaq这样的DI容器中建立这两个类之间的关系。
如果b2bHotelSOAPPortType是一个接口,那么它将被实现
interface b2bHotelSOAPPortType {
}
如果它是抽象类那么
abstract class b2bHotelSOAPPortType {
}
您需要找到一个直接或间接实现b2bHotelSOAPPortType的类。如果它直接实现它,它将看起来像这样
class Concreteb2bHotelSOAPPortType : b2bHotelSOAPPortType {
}
如果您使用的是Visual Studio,您将能够很容易地找到哪些类实现此接口或抽象类。
答案 1 :(得分:3)
无法实例化抽象类或接口。
您必须实例化一个继承自此类的类(或实现该接口)。