2015-12-03 130 views
0

是否有任何方法可以从基类中覆盖派生类中的自动属性功能?例如:为自动属性定义自定义功能C#

class Foo 
{ 
    public override void OverrideSetSomeHow() 
    { 
    //do something 
    } 
    public override void OverrideGetSomeHow() 
    { 
     //do something 
    } 
} 

class Bar : Foo 
{ 
    public string Name { get; set; } 
} 

class SomeOtherClass: Foo 
{ 
    public Guid Id { get; set; } 
} 

所需的效果是,get和set调用基类中的重写方法(或者需要发生)。我想强制执行所有派生类中的获取和设置功能,而不希望其他人使用代码来知道它在做什么,它看起来比把所有相同的逻辑放在一个更干净一堆不同的地方。

+0

你试图做的事情不可能。 – MarcinJuraszek

+0

我想尽可能多,但想法ID给它一个镜头。谢谢 – derek

+0

我对你要完成的任务感到茫然。你能否提供一个这样的例子,也许我们可以帮助你以不同的方式做到这一点? – nlaq

回答

1

不知道我得到了你需要的东西,但如果你试图实现的是拦截呼叫,所以你可以做额外的工作,我建议你看看Castle DynamicProxy,这正好说明了这一点。

+0

令人惊叹!谢谢。我能够使用IInterceptor获取正在设置的值,获取调用目标(派生类)并将该值添加到字典中(在基类中),将该值设置为null(现在它在字典),同时保持默认的获取/设置在自动属性上。 – derek