所以我有一个没有构造函数的Vehicle类。我想创建一个名为VehicleExtended的新类,该类继承自Vehicle。错误是:“车辆”不包含带有0个参数的构造函数(CS1729)
没有构造函数就可以继承吗?
注意:我无法编辑基类,因为它只是我可以看到的元数据。
public class VehicleData : Vehicle { [BsonId]public int _id { get; private set;} public bool IsCompany { get; private set;} public int OwnerID { get; private set; } public string modelName { get; private set;} }
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在C#中,当你创建一个继承自另一个类的新类时,如果基类没有默认构造函数(即没有参数的构造函数),那么子类在实例化时需要显式地调用基类的一个构造函数。由于你不能编辑Vehicle
基类且它没有无参构造函数,你需要在VehicleExtended
类的构造函数中使用base
关键字来调用Vehicle
类的一个存在的构造函数。
但是根据你的描述,实际上你展示的类名是VehicleData
而不是VehicleExtended
,我将基于这个实际类名进行说明:
如果你的Vehicle
类确实有其他带有参数的构造函数,你应该这样修改你的VehicleData
类以解决CS1729错误:
public class VehicleData : Vehicle
{
[BsonId]
public int _id { get; private set; }
public bool IsCompany { get; private set; }
public int OwnerID { get; private set; }
public string modelName { get; private set; }
// 假设Vehicle类有一个接受int类型参数的构造函数
public VehicleData(int someParameterForVehicle, int id, bool isCompany, int ownerId, string modelName)
: base(someParameterForVehicle)
{
_id = id;
IsCompany = isCompany;
OwnerID = ownerId;
this.modelName = modelName;
}
}
在这个例子中,我假设Vehicle
类有一个需要整数参数的构造函数。你需要将someParameterForVehicle
替换为实际的参数名称和类型,确保它与Vehicle
类的实际构造函数签名相匹配。
如果Vehicle
类有多个构造函数,选择适合你场景的那个,并相应地调整VehicleData
类的构造函数参数。如果Vehicle
没有任何公开的构造函数(即它们都是私有的或受保护的),那么在不修改基类的情况下,你是无法直接继承它的,这通常意味着设计上不允许这样的继承关系。