C# 可以在实体对象接口上实现接口属性吗?
我正在使用实体框架,并为租赁交易创建了一个接口:C# 可以在实体对象接口上实现接口属性吗?,c#,.net,entity-framework,interface,C#,.net,Entity Framework,Interface,我正在使用实体框架,并为租赁交易创建了一个接口: public interface ILeaseTransaction { int ID { get; } DateTime Date { get; } decimal Amount { get; } } 然后,为了在实体对象上实现接口,我创建了一个空的分部类: public partial class Type1LeaseTransaction : ILeaseTransaction { } 这很好,但是事务也可以有
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 ILeaseTransaction.Void
{
get { return (ILeaseTransactionVoid)Void; }
}
}
空的部分类…:
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”
我想这个错误是有意义的,因为返回类型不是接口本身,即使它实现了接口。我对这一切都不熟悉,所以我现在完全迷路了
我有没有办法在ILeaseTransaction
上实现嵌套接口属性ILeaseTransactionVoid
谢谢大家! 所以这似乎不是很流行,但我还是设法找到了答案,希望有一天有人会觉得这很有用: 解决方案是保持接口签名与上述相同:
public interface ILeaseTransaction
{
int ID { get; }
DateTime Date { get; }
decimal Amount { get; }
ILeaseTransactionVoid Void { get; } // This throws an error
}
并通过添加特定于接口的属性更改实体类实现接口的方式,如下所示:
public interface ILeaseTransactionVoid
{
int TransactionID { get; }
DateTime Date { get; }
int TypeID { get; }
}
public partial class Type1LeaseTransactionVoid : ILeaseTransactionVoid
{
ILeaseTransactionVoid ILeaseTransaction.Void
{
get { return (ILeaseTransactionVoid)Void; }
}
}
我确实有这个问题,所以我很高兴找到这个解决方案。。。。但是,我的实现有两个错误:1。(我的Void属性等价物)错误的显式实现是:忽略前面的注释-我解决了我的问题。非常感谢您发布答案-这在这里产生了很大的不同!