在C#中,我可以在子类中隐藏/修改访问者吗?
-
22-09-2019 - |
题
我什至不确定这个原则是什么,或者如何搜索它,所以如果以前提出了这个原则,我真诚道歉,但是最好的方法就是一个例子。
class Properties
{
public string Name { get; set; }
}
class MyClass
{
class SubProperties: Properties
{
public override Name
{
get { return GetActualName(); }
set { SetActualName(value); }
}
}
public SubProperties ClassProperties;
private string GetActualName()
{
return SomeFunction();
}
private void SetActualName(string s)
{
ClassProperties.Name = SomeOtherFunction(s);
}
}
这个想法是要有实例化的任何对象 MyClass
拥有完全可访问的属性 ClassProperties
. 。对于该对象,它看起来完全像一个属性对象,但是在场景后面,MyClass实际上是在计算和修改字段的结果。这种声明方法显然是错误的,因为我无法访问 GetActualName()
和 SetActualName()
从内部 SubProperties
定义。我将如何实现这样的目标?
解决方案
您在寻找这样的东西吗?
abstract class Properties
{
public abstract string Name { get; set; }
}
class MyClass
{
private class SubProperties : Properties
{
private MyClass myClass;
public SubProperties(MyClass myClass)
{
this.myClass = myClass;
}
public override Name
{
get { return this.myClass.GetActualName(); }
set { this.myClass.SetActualName(value); }
}
}
private string name;
public MyClass
{
this.MyClassProperties = new SubProperties(this);
}
public Properties MyClassProperties { get; private set; }
private string GetActualName()
{
return this.name;
}
private void SetActualName(string s)
{
this.name = s;
}
}
如果要从子专业访问myClass方法,则需要将对myClass实例的引用传递给子专业实例。
其他提示
public virtual string Name { get; set; }
不隶属于 StackOverflow