C# 用户类继承IdentityUser;如何处理多重继承的需要?
假设我有一个用户类:C# 用户类继承IdentityUser;如何处理多重继承的需要?,c#,inheritance,entity-framework-core,C#,Inheritance,Entity Framework Core,假设我有一个用户类: public class User : IdentityUser { public int CompanyId { get; set; } //other stuff.... } 现在我有了其他的类来代表人们,比如Customer,Employee,SecurityGuard。。。等等 我希望他们都继承Person类: public class Person { public string FirstName { get; set; } p
public class User : IdentityUser
{
public int CompanyId { get; set; }
//other stuff....
}
现在我有了其他的类来代表人们,比如Customer
,Employee
,SecurityGuard
。。。等等
我希望他们都继承Person
类:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string UID { get; set; }
//etc...
}
public class User : IdentityUser
{
public int CompanyId { get; set; }
public virtual Person Person { get; set; }
//other stuff....
}
在这一点上,合成将是天赐良机,但由于EF Core还不支持复杂类型,我被卡住了。有什么办法可以解决这个问题吗?不是每个
用户都是人。应用程序通常有一些“后台”用户/进程(自动更正服务、计划任务等),这些用户/进程仍然执行应该注册/记录的操作
因此,您可以在User
类中创建Person
属性:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string UID { get; set; }
//etc...
}
public class User : IdentityUser
{
public int CompanyId { get; set; }
public virtual Person Person { get; set; }
//other stuff....
}
并非每个用户
都是人
。应用程序通常有一些“后台”用户/进程(自动更正服务、计划任务等),这些用户/进程仍然执行应该注册/记录的操作
因此,您可以在User
类中创建Person
属性:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string UID { get; set; }
//etc...
}
public class User : IdentityUser
{
public int CompanyId { get; set; }
public virtual Person Person { get; set; }
//other stuff....
}
为什么不将属性放入User
或使Person
继承自User
?因为其他类需要继承自Person,而它们不是应用程序中的用户(客户、员工等)。将属性放入用户将意味着将代码复制到其他每一个类中。。。这是我目前唯一的选择。将Person
的属性提取到interfaceIPerson
。让User
也实现IPerson
。是的,这是代码的重复,但是由于User
已经有了一个基类,这是C#允许的最好的方法,同时仍然允许您将User
传递给处理类person属性的方法。为什么不将属性放入User
或使person
从User
继承?因为其他类需要从person继承,并且它们不是应用程序中的用户(客户、员工等)。将属性放入用户将意味着将代码复制到其他每个类中…这是我目前唯一的选择。将Person
的属性提取到interfaceIPerson
。让User
也实现IPerson
。是的,这是代码的重复,但因为User
已经有了一个基本类s、 这是C#允许的最好的方法,同时仍然允许您将User
传递给处理类人属性的方法。