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(上記のように)