我正在使用Entity Framework,我已经为租赁事务创建了一个接口:
public interface ILeaseTransaction
{
int ID { get; }
DateTime Date { get; }
decimal Amount { get; }
}
然后在实体对象上实现接口我创建了一个空的分部类:
public partial class Type1LeaseTransaction : ILeaseTransaction
{
}
这样可以正常工作,但是事务也可以有零个或一个Void,它们也是实体对象。我试图按如下方式实施空白:
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'未实现接口成员'DomainModel.Abstract.ILeaseTransaction.Void'。 'DomainModel.Models.Type1LeaseTransaction.Void'无法实现'DomainModel.Abstract.ILeaseTransaction.Void' 因为它没有匹配的返回类型'DomainModel.Abstract.ILeaseTransactionVoid'。
我猜这个错误很有意义,因为返回类型不是接口本身,即使它确实实现了接口。我对这一切都很陌生,所以我现在完全迷失了。
我有什么方法可以在ILeaseTransactionVoid
上实现嵌套接口属性ILeaseTransaction
吗?
谢谢!
答案 0 :(得分:1)
所以这似乎不太受欢迎,但是我确实设法找到答案,所以希望有人发现这一天有用:
解决方案是保持界面签名与上面相同:
public interface ILeaseTransaction
{
int ID { get; }
DateTime Date { get; }
decimal Amount { get; }
ILeaseTransactionVoid Void { get; } // This throws an error
}
通过添加特定于接口的属性来更改Entity类实现接口的方式,如下所示:
public partial class Type1LeaseTransactionVoid : ILeaseTransactionVoid
{
ILeaseTransactionVoid ILeaseTransaction.Void
{
get { return (ILeaseTransactionVoid)Void; }
}
}