如何让派生类的每个成员访问基类的公共属性?
实现方案
你当前的写法行不通,因为string类型本身并没有Visible属性。要实现每个成员都能关联Visible状态,得把每个成员包装成一个包含状态的类,这里用泛型类来实现通用包装:
1. 定义泛型包装类
这个类既保存属性的实际值,又包含Visible属性:
public class PropertyWithVisibility<T> { public T Value { get; set; } public bool Visible { get; set; } }
2. 修改派生类的成员类型
把DerivedClass里的FirstName和LastName换成上面的泛型包装类:
public class ParentClass { // 若ParentClass的Visible是实例级状态可保留,和成员级Visible互不冲突 } public class DerivedClass : ParentClass { public PropertyWithVisibility<string> FirstName { get; set; } = new PropertyWithVisibility<string>(); public PropertyWithVisibility<string> LastName { get; set; } = new PropertyWithVisibility<string>(); }
3. 使用示例
现在就可以像你期望的那样访问和修改Visible属性了:
public class MainClass { public DerivedClass derived = new DerivedClass(); public void Test() { // 设置成员的Visible状态 derived.FirstName.Visible = true; derived.LastName.Visible = false; // 设置成员的实际值 derived.FirstName.Value = "John"; derived.LastName.Value = "Doe"; } }
内容的提问来源于stack exchange,提问作者user1770517
相关产品推荐
相关产品推荐

