[DataContract]
public class OrderSyncData : ISync
{
public OrderSyncData(Order o)
{
this.CurrentOrderStatus = o.DriverStatus;
this.StatusDescription = o.StatusDescription;
SyncTimestamp = o.SyncTimestamp; ????
}
[DataMember]
public string CurrentOrderStatus { get; set; }
[DataMember]
public string StatusDescription { get; set; }
[DataMember]// I don't think I need these any more
public bool IsCanceled { get; set; }
[DataMember]
public bool IsResolved { get; set; }
[DataMember]
public bool IsPendingResponse { get; set; }
DateTime ISync.SyncTimestamp { get; set; }
}如何设置ISync.SyncTimestamp的值?我试过演“这个”但它不起作用
发布于 2013-02-15 03:06:55
这应该是可行的:
((ISync)this).SyncTimestamp = o.SyncTimestamp;请注意(ISync)this周围的额外花括号。
发布于 2013-02-15 03:06:51
您只需要将this转换为
((ISync) this).SyncTimestamp = o.SyncTimestamp;或者你可以用两个语句来完成:
ISync sync = this;
sync.SyncTimestamp = o.SyncTimestamp;基本上,显式接口实现意味着只有当您在简单的ISync上下文中查看this时,该属性才可用,而不是实现类。
发布于 2013-02-15 03:11:24
这是因为您显式地实现了SyncTimestamp。不能从类实例访问显式实现。为什么?因为显式实现允许您实现具有相同成员名称的多个接口。
class Foo: IBar, IFoo
{
bool IBar.FooBar {get;set;}
bool IFoo.FooBar {get;set;}
}那么编写this.FooBar指的是哪种实现?因此,要么像其他答案所建议的那样显式地将this转换为所需的接口,要么不显式地实现SyncTimestamp,而是隐式地实现它:public DateTime SyncTimestamp { get; set; }。那么this.SyncTimestamp就可以工作了。
https://stackoverflow.com/questions/14882141
复制相似问题