C#:无法创建抽象类或接口的实例

时间:2013-09-20 14:24:26

标签: c# web-services

我正在使用来自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);

2 个答案:

答案 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)

无法实例化抽象类或接口。

您必须实例化一个继承自此类的类(或实现该接口)。