将类的属性映射到接口

时间:2016-01-14 15:30:13

标签: c# inheritance interface attributes

我只是想知道是否有办法将属性从类映射到接口而不更改其名称。

假设您从数据库中导入了一些实体

public partial class Post
{
    public int PostId {get; set;}
}

public partial  class Book
{
    public int BookId {get; set;}
}

和界面:

public interface IHasID
{
   int Id {get; set;}
}

有没有办法从这个界面继承,只使用以下属性映射属性:

public partial class Post : IHasID
{
    [MetadataTypeAttribute(typeof(IHasID.Id))]
    public int PostId;
}   

我只是想要一个简单的方法来做到这一点,而无需包装所有代码或更改数据库。有没有办法包装parital类将其属性指向接口属性?

2 个答案:

答案 0 :(得分:2)

您可以创建一个ID属性来获取和设置对象的相应ID,如下所示:

public partial class Post : IHasID
{
    [NotMapped]
    public int Id 
    {
        get { return PostId; }
        set { PostId = value; }
    }

    public int PostId { get; set; }

    ...

你当然会为Book做同样的事情。

答案 1 :(得分:1)

我不确定是否值得指出,只是为了知识,如果它是vb.net,你可以这样做:

Partial Public Class Post
    Implements IHasID

    Public Property PostId As Integer Implements IHasID.Id
End Class