1
即时通讯尝试创建一个带有Microsoft Unity和AOP的记录器,但有些东西不起作用......我不明白..我只知道我不记录任何东西。用Unity和AOP创建一个日志
这里记录器的代码:
public class LoggerHandler : ICallHandler
{
public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
{
//The code to write a file
return result;
}
...
}
在这里,我创建属性:
//create an attribute so you can apply it to your methods
public class LoggerAttribute : Attribute
{
public LoggerAttribute()
{
//Here I have a breakpoint just to understand if i go here. I never stop here
}
}
这里的帮手通过的web.config配置拦截
public class GetTypeConverter : TypeConverter
{
public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
{
return Type.GetType(value.ToString());
}
}
而且这里web.config
<types>
<type type="en.MFS.BLL.Countries.ICountries, en.MFS.BLL.Countries"
mapTo="en.MFS.BLL.France.FranceBLL, en.MFS.BLL.France">
<interceptor type="TransparentProxyInterceptor" />
</type>
</types>
<extension type="Interception" />
<interception>
<policy name="LoggerPolicy">
<matchingRule name="TransactionMatchingRule" type="CustomAttributeMatchingRule">
<constructor>
<param name="attributeType" type="System.Type">
<value value="en.MFS.LoggerInterception.LoggerAttribute" typeConverter="en.MFS.LoggerInterception.GetTypeConverter, en.MFS.LoggerInterception"/>
</param>
<param name="inherited" value="true" />
</constructor>
</matchingRule>
<callHandler name="LoggerHandler"
type="en.MFS.LoggerInterception.LoggerHandler, en.MFS.LoggerInterception" >
<property name="Order" value="1" />
</callHandler>
</policy>
</interception>
而在最后,我如何使用它
[Logger]
GetCalculation_OutDTO GetCalculation(GetCalculation_InDTO calculationDTO);
那么,什么是错的?为什么我不设法进入LoggerAttribute的构造函数?