如果有一个标志 IsAdmin,将其转换为 AdminUser,否则将其转换为 NormalUser。
只是好奇,不确定如何做到这一点。我看到你可以根据表格值和另一个表格创建子对象,例如:
SiteUser is from the table Site_User AdminUser is from the table Site_User and Admin_User when Site_User.IsAdmin = true
然而,我很好奇你能否做到这一点:
如果IsAdmin为true,则转换为AdminUser,否则转换为NormalUser,其中AdminUser:SiteUser和NormalUser:SiteUser,但没有Admin_User表或Normal_User表,这是基于相同表格和列值进行严格的转换。这些类型不包含任何额外信息,只需在某些情况下有用:
SomeMethod(SiteUser someUser)
{
if(someUser is AdminUser)
{
...
}
else
{
...
}
}
不是:
SomeMethod(SiteUser someUser)
{
if(someUser.IsAdmin)
{
...
}
else
{
...
}
}
现在我意识到这可能并不是最好的例子,但假设旗帜是一个多值属性,所以不是:
SomeMethod(SiteUser someUser)
{
swith(someUser.Role)
{
case(1):
break;
case(2)
break;
}
}
当然,这可能只是一个坏主意,但是我想知道是否有可能。