C# 与类型重写C的接口#
我正试图以一种更灵活的方式设置我的航路点系统,这样我就可以使用派生类进行更多的定制,但我一直在努力设置如何为其定义派生类型的功能 我有这样的界面:C# 与类型重写C的接口#,c#,.net,types,interface,C#,.net,Types,Interface,我正试图以一种更灵活的方式设置我的航路点系统,这样我就可以使用派生类进行更多的定制,但我一直在努力设置如何为其定义派生类型的功能 我有这样的界面: public interface ISegment { IWaypoint WaypointA { get; set; } IWaypoint WaypointB { get; set; } } 我的细分市场有: public class Segment : ISegment { private Waypoint _wayp
public interface ISegment
{
IWaypoint WaypointA { get; set; }
IWaypoint WaypointB { get; set; }
}
我的细分市场有:
public class Segment : ISegment
{
private Waypoint _waypointA;
public IWaypoint WaypointA
{
get => _waypointA;
set => _waypointA = value;
}
private Waypoint _waypointB;
public IWaypoint WaypointB
{
get => _waypointB;
set => _waypointB = value;
}
}
航路点等级:
public class Waypoint : IWaypoint
{
public Vector3 Position {get; set;} // from IWaypoint
//...custom logic ... //
}
其中,航路点
是我的派生类和所有自定义逻辑。但我不能这样做,因为它不会将IWaypoint
转换为waypoint:IWaypoint
类型的备份字段\u waypoint
正确的设置方法是什么,这样我可以应用我自己的自定义航路点类,但仍然具有接口要求的严格合同设置?可能您可以显式地实现
ISegment
,即:
public class Segment : ISegment
{
public Waypoint WaypointA { get; set; }
IWaypoint ISegment.WaypointA
{
get => WaypointA;
set => WaypointA = (Waypoint) value; // throw an exception if value is not of type Waypoint
}
}
public interface IWaypoint { }
public class Waypoint : IWaypoint { }
public interface ISegment
{
IWaypoint WaypointA { get; set; }
}
Segment
是否在内部取决于具体的实施Waypoint
还是只取决于其航路点实施IWaypoint
?Segment
只有IWaypoint实施,否则它将迫使我只使用特定的航路点
类。那么,究竟什么是不起作用的呢?你能提供一个例子吗?@KirillPolishchuk段中的设置器在语法上是一个错误,因为它无法将IWaypoint转换为Waypoint。你能将\u waypointA
数据类型更改为IWaypoint
?当属性类型为IWaypoint
时,这为什么允许你将值转换为Waypoint
?@WDUK,这不是转化,这是铸造。为什么不应该呢?