我有一個使用Autofac實例化對象爲什麼我的繼承類沒有隱藏我的基類方法?
builder.RegisterType<AbcWebWorkContext>().As<IWorkContext>().InstancePerHttpRequest();
這AbcWebWorkContext
一個項目是WebWorkContext
一個子類:
public partial class AbcWebWorkContext : WebWorkContext
在我AbcWebWorkContext
我想隱藏的方法和屬性母類
protected new Customer GetCurrentCustomer(){ //do stuff }
new public Customer CurrentCustomer { //do studd }
但是當有人叫
_workContext.CurrentCustomer
調用基類屬性。如果我這樣稱呼它
((AbcWebWorkContext) _workContext).CurrentCustomer
它的工作原理。
我想知道爲什麼我不能隱藏父方法。 我不能改變被調用的類,因爲它在NopCommerce
的核心,我不想改變。
爲什麼不隱藏該方法?
的方法基礎類聲明:
protected Customer GetCurrentCustomer() { // do stuff }
public Customer CurrentCustomer{ // do stuff }
主叫GetType()
_workcontext
上會輸出
{Name = "AbcWebWorkContext" FullName = "Nop.Web.Framework.AbcWebWorkContext"}
的類型層次是IWorkContext
(接口)« WebWorkContext
« AbcWebWorkContext
_workContext
被聲明爲IWorkContext
和Autofac生成實例作爲AbcWebWorkContext
(如上圖所示)
這個方法在基類中是如何聲明的? – pickypg 2013-03-14 02:32:23
@pickypg將其添加到問題 – JSBach 2013-03-14 02:38:32
http://stackoverflow.com/questions/1853896/is-it-possible-to-override-a-non-virtual-method – pickypg 2013-03-14 02:48:11