我写了个派生类 public class MyMemberShipUser:MembershipUser
现在用MemberShip.GetUser(userName)得到了一个MemberShipUser
如果把这个基类实例MemberShipUser转换为派生类实例myMemberShipUser呢
现在用MemberShip.GetUser(userName)得到了一个MemberShipUser
如果把这个基类实例MemberShipUser转换为派生类实例myMemberShipUser呢
if(u != null)
{
}
也许用接口好些,免得转
不知道你要实现什么,贴出部分代码看看
比如:A是基类,B派生自A,比A多了个属性x。
A a = new A();
B b = (B)a;是不允许的,因为不知道x应该怎样取值。而:
A a = new B();
B b = (B)a;是允许的。
if(ret is MyMemberShipUser)
{
.......
}
else
{
//逻辑处理
}
实际上,这完全是设计错误,理应从class MyMemberShipUser设计上就杜绝,即有断言或者回归测试来保证。所以我说“如果你明知强制装换就好”,这要看你的程序是个什么质量的,我写的程序 (MyMemberShipUser)MemberShip.GetUser(userName) 不会出错,你写的就可以先用is判断一下。
本来想用这种方法扩展一下MembershipUser的,看来行不通了
{
private string _qq;
……
Public String QQ
{
get;
set;
}
……
}用的时候:
public class MyMemberShip
{
public static MyMemberShipUser GetUser(string userName)
{
MyMemberShipUser myUser = (MyMemberShipUser)Membership.GetUser(userName);
return myUser;
}
}
public class MyMemberShip
{
public static MyMemberShipUser GetUser(string userName)
{
MyMemberShipUser myUser = (MyMemberShipUser)Membership.GetUser(userName); myUser.QQ=GetQQ(); return myUser;
}
}