我有两个类继承自 ICart 接口
当我从这个类创建一个对象时,我只希望 Guest 类向我显示 IsInfoExist 属性。我该怎么做?
ICart cart = new Guest();
bool c = cart.IsInfoExist //it's ok
ICart cart = new Member();
cart.IsInfoExist not ok.
其实我不想永远不会出现在智能感知上,但界面强迫我显示 Member IsInfoExist 属性
class Guest:ICart
{
public bool IsInfoExist
{
get { return Session["guest_info"] != null; }
}
public void GetCart()
{
}
}
class Member:ICart
{
//Hide this on intellinsense always!
public bool IsInfoExist
{
get { return false; }
}
public void GetCart()
{
}
}
public interface ICart
{
void GetCart();
bool IsInfoExist { get; }
}
如果IsInfoExists
必须在 Guest 类中,请将其从界面中删除并保留在Guest
类中。实现接口的类必须实现其中的所有方法,但它可以具有不属于该接口且特定于该类的其他方法。必须IsInfoExists
在Member
类中实现只是为了在之后隐藏它是无稽之谈。所以,它会是这样的:
public interface ICart
{
void GetCart();
}
class Guest:ICart
{
public bool IsInfoExist
{
get { return Session["guest_info"] != null; }
}
public void GetCart()
{
}
}
class Member:ICart
{
public void GetCart()
{
}
}
编辑
对您来说,这种方法的问题似乎在于您总是使用类型变量,ICart
这样您就无法访问该方法。但是你可以,你只需要把它转换成正确的类型,就像这样:
ICart cart = new Guest();
ICart cart2 = new Member();
if (cart is Guest)
{
bool info=((Guest)cart).IsInfoExist;
}
if (cart is Member)
{
bool info=((Member)cart).IsInfoExist; //this won't compile as IsInfoExist is not in the Member class
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句