pis*_*hio 0 c# static-methods object
我有一个示例类:
class SampleClass
{
public virtual string SomeProperty{get; set;}
public virtual void SomeMethod() {
// code
}
}
Run Code Online (Sandbox Code Playgroud)
我可以继承它并覆盖SomeProperty和SomeMethod,如下所示:
class ChildClass:SampleClass
{
public override string SomeProperty{get; set;}
public override void SomeMethod() {
// code
}
}
Run Code Online (Sandbox Code Playgroud)
有什么方法可以覆盖一个对象,而不是一个类?喜欢
SampleClass sampleObject = new sampleObject();
Run Code Online (Sandbox Code Playgroud)
并且sampleObject.SomeMethod()是唯一的吗?谢谢.
Jon*_*eet 11
不,您不能基于每个对象覆盖.但是,如果要为不同的对象提供不同的行为模型,则始终可以将委托传递给构造函数:
public class ChildClass : SampleClass
{
private readonly Action someMethodBehavior;
public ChildClass(Action someMethodBehavior) {
this.someMethodBehavior = someMethodBehavior;
}
public override void SomeMethod() {
someMethodBehavior();
}
}
Run Code Online (Sandbox Code Playgroud)
这允许每个对象有效地指定自己的行为.您甚至可以允许空委托引用表示"只执行默认操作",如果您希望它是一种选择性覆盖.
| 归档时间: |
|
| 查看次数: |
1474 次 |
| 最近记录: |