我正在尝试拦截 WCF 客户端。但是 Unity 拦截器似乎不起作用。
- 我没有接到代理的电话。
- 我不知道如何将属性链接到容器
- 在 AddPolicy 中,name 属性是什么 - 这里我使用了拦截函数 - GetXml。
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Method)]
public class GetXmlCallHandlerAttribute : HandlerAttribute
{
public GetXmlCallHandlerAttribute(){}
public override ICallHandler CreateHandler(IUnityContainer ignored)
{
return new GetXmlTestCallHandler();
}
}
public class GetXmlTestCallHandler : ICallHandler
{
public int Order { get; set; }
public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
{
IMethodReturn msg;
Object returnValue = XElement.Load("../../Resources/a1.xml");
Object[] outputs = null;
msg = input.CreateMethodReturn(returnValue, outputs);
return msg;
}
}
class SendDataTest
{
public void GetXmlTest()
{
IUnityContainer container = new UnityContainer();
ICallHandler myInterception = new GetXmlTestCallHandler();
container.AddNewExtension<Interception>();
container.RegisterType<SendData>(new Interceptor(new TransparentProxyInterceptor()));
container.Configure<Interception>().AddPolicy("GetXml").AddCallHandler(myInterception);
SendData target = container.Resolve<SendData>();
XElement expected = null; // TODO: Initialize to an appropriate value
XElement actual;
actual = target.GetXml();
Assert.AreEqual(expected, actual);
Assert.Inconclusive("Verify the correctness of this test method.");
}
}