도메인 개체 :Ninject. 내부 설정 - 속성에 이상한 차단
TargetObject.cs
public class TargetObject
{
public virtual ChildTargetObject ChildTargetObject
{
get { return ChildTargetObjectInner; }
set { ChildTargetObjectInner = value; }
}
public virtual ChildTargetObject ChildTargetObjectInner { get; set; }
}
구성 및 테스트 : 마지막 줄에서
var settings = new NinjectSettings
{
InjectNonPublic = true,
AllowNullInjection = true
};
var kernel = new StandardKernel(settings);
kernel.Bind<TargetObject>().ToSelf();
kernel.InterceptReplaceSet<TargetObject>(t => t.ChildTargetObjectInner,
(inv) =>
{
inv.Proceed(); // <= we never step here. Why?
}
);
var o = kernel.Get<TargetObject>();
o.ChildTargetObject = new ChildTargetObject();
우리는 변화 속성 이 ChildTargetObject 그리고 내부 속성이 변경됩니다. ChildTargetObjectInner. 그러나 우리는 그것의 가로 채기를하지 않았다. 왜?
근처의 "가상"을 제거하면 ChildTargetObject 잘 작동합니다 (하지만 NHiber를 사용하기 때문에이 해결 방법은 불가능합니다).
내가 ChildTargetObjectInner을 변경하는 경우 직접 (예는, o.ChildTargetObjectInner = 새로운 ChildTargetObject();) 년은 절편을 얻었다.
변경 사항을 (클래스 및 클래스를 벗어난) 가로 채기하려면 어떻게해야합니까? 고맙습니다.