C# “如何防止错误”;Id:Name:类型中的每个属性名称都必须是唯一的。物业名称';Id';已定义;
为了实现自定义身份验证模块,我使用了asp.net标识。我需要我的用户类从asp.net Identity的用户类继承。我有两个名称相同但值类型不同的字段,当然会出错。请告诉我需要做什么来防止这个错误。非常感谢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 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{
}
更改字符串的名称。你真的没有别的选择了。