C# “如何防止错误”;Id:Name:类型中的每个属性名称都必须是唯一的。物业名称';Id';已定义;

C# “如何防止错误”;Id:Name:类型中的每个属性名称都必须是唯一的。物业名称';Id';已定义;,c#,asp.net,asp.net-mvc,asp.net-identity,C#,Asp.net,Asp.net Mvc,Asp.net Identity,为了实现自定义身份验证模块,我使用了asp.net标识。我需要我的用户类从asp.net Identity的用户类继承。我有两个名称相同但值类型不同的字段,当然会出错。请告诉我需要做什么来防止这个错误。非常感谢 // asp.net Identity User class public class User : Entities.User, IUser { public new string Id { get { return base.Id.ToString()

为了实现自定义身份验证模块,我使用了asp.net标识。我需要我的用户类从asp.net Identity的用户类继承。我有两个名称相同但值类型不同的字段,当然会出错。请告诉我需要做什么来防止这个错误。非常感谢

// asp.net Identity User class
public class User : Entities.User, IUser
{
    public new string Id
    {
        get { return base.Id.ToString(); }
    }
}

// My User class   
public class Entities.User : BaseDomainObject
{
    public string Email { get; set; }
    public string PasswordHash { get; set; }
    public string SecurityStamp { get; set; }
    public string UserName { get; set; }
    public List<Login> Logins { get; set; }
}

public abstract class BaseDomainObject
{
    public BaseDomainObject()
    {
        CreatedOn = DateTime.Now;
        ModifiedDate = DateTime.Now;
    }

    public int Id { get; set; }
    public DateTime CreatedOn { get; set; }
    public DateTime ModifiedDate { get; set; }
    public DateTime? DeleteDate { get; set; }
}
//asp.net标识用户类
公共类用户:实体。用户,IUser
{
公共新字符串Id
{
获取{return base.Id.ToString();}
}
}
//我的用户类
公共类实体。用户:BaseDomainObject
{
公共字符串电子邮件{get;set;}
公共字符串密码哈希{get;set;}
公共字符串SecurityStamp{get;set;}
公共字符串用户名{get;set;}
公共列表登录{get;set;}
}
公共抽象类BaseDomainObject
{
公共BaseDomainObject()
{
CreatedOn=DateTime.Now;
ModifiedDate=DateTime.Now;
}
公共int Id{get;set;}
public DateTime CreatedOn{get;set;}
公共日期时间修改日期{get;set;}
公共日期时间?删除日期{get;set;}
}

即使两个属性具有不同的类型,也无法使它们具有相同的名称


如果您需要这些东西,这肯定是一个设计问题,您可能需要重新考虑您需要涵盖的业务场景,并寻找不同的设计/解决方案。

更改您的设计,以便用户不会从Entities.User继承

如果需要对Entities.User对象的引用,可以将其存储为用户上的属性:

public class User : IUser
{
    private Entities.User _eUser;
    public Entities.User EUser
    {
        get { return _eUser; }
        set { _eUser = value; }
    }

    public string Id
    {
        get
        {
            return _eUser.Id.ToString();
        }
    }
}

不要使用
IUser
界面,而是使用通用的
Microsoft.AspNet.Identity.IUser
,这样您就不需要更改
Id

public class User : Entities.User, Microsoft.AspNet.Identity.IUser<int> {

}
public类用户:Entities.User,Microsoft.AspNet.Identity.IUser{
}

更改字符串的名称。你真的没有别的选择了。