是否可以在实体对象接口上实现接口属性?
问题描述:
我使用实体框架和我已经创建了租赁交易的接口:是否可以在实体对象接口上实现接口属性?
public interface ILeaseTransaction
{
int ID { get; }
DateTime Date { get; }
decimal Amount { get; }
}
然后实施对实体对象我创建了一个空的部分类接口:
public partial class Type1LeaseTransaction : ILeaseTransaction
{
}
该作品很好,但是交易也可以有零个或一个也是实体对象的空洞。我试图实现的空隙如下:
public interface ILeaseTransactionVoid
{
int TransactionID { get; }
DateTime Date { get; }
int TypeID { get; }
}
和空部分类...:
public partial class Type1LeaseTransactionVoid : ILeaseTransactionVoid
{
}
我遇到的问题是,当我尝试将ILeaseTransactionVoid
添加为属性在LeaseTransaction
接口:
public interface ILeaseTransaction
{
int ID { get; }
DateTime Date { get; }
decimal Amount { get; }
ILeaseTransactionVoid Void { get; } // This throws an error
}
当我尝试和建设,我得到以下错误:
'DomainModel.Models.Type1LeaseTransaction' does not implement interface member 'DomainModel.Abstract.ILeaseTransaction.Void'. 'DomainModel.Models.Type1LeaseTransaction.Void' cannot implement 'DomainModel.Abstract.ILeaseTransaction.Void' because it does not have the matching return type of 'DomainModel.Abstract.ILeaseTransactionVoid'.
我想错误是有道理的,因为返回类型不是接口本身,即使它实现了接口。我对这一切都很陌生,所以我完全失去了这一点。
有没有什么办法让我在ILeaseTransaction
上实现嵌套接口属性ILeaseTransactionVoid
?
谢谢!
答
因此,这似乎不是很流行,但我还是设法找到答案,所以希望有人认为这有用的天:
解决的办法是保持接口的签名与上面相同:
public interface ILeaseTransaction
{
int ID { get; }
DateTime Date { get; }
decimal Amount { get; }
ILeaseTransactionVoid Void { get; } // This throws an error
}
,并更改实体类通过如下添加接口特定的属性实现接口的方式:
public partial class Type1LeaseTransactionVoid : ILeaseTransactionVoid
{
ILeaseTransactionVoid ILeaseTransaction.Void
{
get { return (ILeaseTransactionVoid)Void; }
}
}
我也正是这个问题,所以我是音响很开心nd这个解决方案....但是我得到2错误与我的执行: 1.显式执行(我相当于你的Void属性)错误: – Laurence 2014-02-26 12:37:58
忽略以前的评论 - 我想出了我的问题。非常感谢发布答案 - 它在这里做了很大的改变! – Laurence 2014-02-26 12:45:14