我们的代码中到处都有这种模式:
using (ServiceAccess ws = new ServiceAccess())
{
//...
//code here to talk to webservice ws
//...
}
如何使用需要与Web服务通信的功能的属性替换此锅炉板代码? (我回想起我很久以前在Java中用Hibernate做了一些东西,并且有一些你可以使用的“Transation”注释会自动插入一些try ... catch样板代码到函数中。)using {}已经相当不错了但是根本没有它会很好...拥有一个属性也有助于将该函数记录为一个谈论Web服务的函数而不是一个函数。
编辑:AOP能解决这个问题吗?
答案 0 :(得分:1)
在spring.net中查看aspects。
答案 1 :(得分:1)
您还可以查看PostSharp。 我不会让你使用属性来实现方面,你可以用它来实现你想要的。
答案 2 :(得分:0)
我认为您可以做的最好的事情是创建一个快捷方式,将该代码作为代码段插入。你不能通过属性将变量声明变成方法。换句话说,属性只能告诉你有关代码的事情。他们无法改变代码本身。
答案 3 :(得分:0)
“Aspect”类型的东西......这是用你选择的代码装饰给定方法的一种方法。如果你想处理,例如在调用您的方法之后,方面和代码必须能够访问服务。这也意味着您几乎无法控制服务类的生命周期。
在最近的一些代码中,我为我的类提供了一个上下文,通过它可以获得服务实例。它们被提供给您可能通过的代表。在你关闭之后可以进行任何处理......
DateTime serverTime;
context.UseService<IInfoService>(s=>serverTime = s.GetTime());