我有一个项目,我在EF中定义了Employer一个派生类User.在我的过程中,我创建了一个用户而不知道它最终是否会成为雇主(或其他类型的用户),之后我需要转换它.起初我尝试过(Intellisense表示存在显式转换):
Employer e = (Employer) GetUser();
Run Code Online (Sandbox Code Playgroud)
但在运行时我得到了:
Unable to cast object of type 'System.Data.Entity.DynamicProxies.User_7B...0D' to type 'Employer'.
Run Code Online (Sandbox Code Playgroud)
所以我试着写一个转换器:
public partial class User
{
public static explicit operator Employer(User u)
{
Run Code Online (Sandbox Code Playgroud)
但我得到错误:
Error 21 'User.explicit operator Employer(User)': user-defined
conversions to or from a derived class are not allowed
C:\Users\..\Documents\Visual Studio 2010\Projects\..\Website\Models\EF.Custom.cs
Run Code Online (Sandbox Code Playgroud)
精细.然后我重载了构造函数,Employer如下所示:
public partial class Employer
{
public Employer(User u)
{
this.Id = u.Id;
this.Claims = u.Claims;
// etc.
}
}
Run Code Online (Sandbox Code Playgroud)
并认为我可以这样做:
Employer e = …Run Code Online (Sandbox Code Playgroud)