可以在Entity Object接口上实现接口属性吗?

时间:2010-09-27 01:46:40

标签: c# .net entity-framework interface

我正在使用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吗?

谢谢!

1 个答案:

答案 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; }
    }
}