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