如何防止错误 "Id: Name: Each property name in a type must be unique. Property name 'Id' is already defined."
How to prevent error "Id: Name: Each property name in a type must be unique. Property name 'Id' is already defined."
为了实现自定义身份验证模块,我使用了asp.net身份。我需要我的用户 class 继承自 asp.net 身份的用户 class。我有两个名称相同但值类型不同的字段,当然会出错。请告诉我我需要做什么来防止这个错误。将不胜感激。
// 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; }
}
无法让 2 个属性具有相同的名称,即使它们具有不同的类型。
如果您需要那个东西,这肯定是一个设计问题,您可能需要重新考虑您需要涵盖的业务场景并寻找不同的 design/solution。
更改您的设计,使 User 不继承自 Entities.User。
如果需要对 Entities.User 对象的引用,您可以将其作为 属性 存储在 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<int>
,这样你就不需要更改 Id
的类型
public class User : Entities.User, Microsoft.AspNet.Identity.IUser<int> {
}
为了实现自定义身份验证模块,我使用了asp.net身份。我需要我的用户 class 继承自 asp.net 身份的用户 class。我有两个名称相同但值类型不同的字段,当然会出错。请告诉我我需要做什么来防止这个错误。将不胜感激。
// 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; }
}
无法让 2 个属性具有相同的名称,即使它们具有不同的类型。
如果您需要那个东西,这肯定是一个设计问题,您可能需要重新考虑您需要涵盖的业务场景并寻找不同的 design/solution。
更改您的设计,使 User 不继承自 Entities.User。
如果需要对 Entities.User 对象的引用,您可以将其作为 属性 存储在 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<int>
,这样你就不需要更改 Id
public class User : Entities.User, Microsoft.AspNet.Identity.IUser<int> {
}