我可以继承 class 获取 parent class 实例的 属性 值吗?
Can I have my inheriting class acquire the property values of a parent class instance with less code than this?
我需要单独的 classes 用于 Xml 序列化。我想知道是否有更简单的方法让继承 BuildingDetail class 从 parent [=24] 获取 属性 值=]建筑 class.
Parent Class
public class Building
{
public int BuildingId;
public string BuildingName;
protected Building()
{
}
private Building(int buildingId, string buildingName)
{
BuildingId = buildingId;
BuildingName = buildingName;
}
public static Building Load(int buildingId)
{
var dr = //DataRow from Database
var building = new Building(
(int) dr["BuildingId"],
(string) dr["BuildingName"]);
return building;
}
}
继承Class
public class BuildingDetail : Building
{
public BaseList<Room> RoomList
{
get { return Room.LoadList(BuildingId); }
}
protected BuildingDetail()
{
}
// Is there a cleaner way to do this?
private BuildingDetail(int buildingId, string buildingName)
{
BuildingId = buildingId;
BuildingName = buildingName;
}
public new static BuildingDetail Load(int buildingId)
{
var building = Building.Load(buildingId);
var buildingDetail = new BuildingDetail(
building.BuildingId,
building.BuildingName
);
return buildingDetail;
}
}
谢谢。
首先,将基础 class 构造函数访问修饰符更改为 protected
。然后你可以使用 base
关键字调用 base class 构造函数:
private BuildingDetail(int buildingId, string buildingName)
: base(buildingId, buildingName)
{
...
}
它将首先调用基础构造函数。此外,如果您不将 :base(param1, param2)
放在构造函数之后,将调用基础的空构造函数。
我需要单独的 classes 用于 Xml 序列化。我想知道是否有更简单的方法让继承 BuildingDetail class 从 parent [=24] 获取 属性 值=]建筑 class.
Parent Class
public class Building
{
public int BuildingId;
public string BuildingName;
protected Building()
{
}
private Building(int buildingId, string buildingName)
{
BuildingId = buildingId;
BuildingName = buildingName;
}
public static Building Load(int buildingId)
{
var dr = //DataRow from Database
var building = new Building(
(int) dr["BuildingId"],
(string) dr["BuildingName"]);
return building;
}
}
继承Class
public class BuildingDetail : Building
{
public BaseList<Room> RoomList
{
get { return Room.LoadList(BuildingId); }
}
protected BuildingDetail()
{
}
// Is there a cleaner way to do this?
private BuildingDetail(int buildingId, string buildingName)
{
BuildingId = buildingId;
BuildingName = buildingName;
}
public new static BuildingDetail Load(int buildingId)
{
var building = Building.Load(buildingId);
var buildingDetail = new BuildingDetail(
building.BuildingId,
building.BuildingName
);
return buildingDetail;
}
}
谢谢。
首先,将基础 class 构造函数访问修饰符更改为 protected
。然后你可以使用 base
关键字调用 base class 构造函数:
private BuildingDetail(int buildingId, string buildingName)
: base(buildingId, buildingName)
{
...
}
它将首先调用基础构造函数。此外,如果您不将 :base(param1, param2)
放在构造函数之后,将调用基础的空构造函数。