再看《C#函数式编程》一书的时候看到HOF的概念,感觉在日常开发的过程中可以使用此方式整理一个拓展方法,实现程序的快速调用。
- Transaction函数继承自
IDisposable - 我们平时开发需要使用using内部对Revit进行操作。实现自动拆卸
- 我们需要创建一个泛型函数
MTransaction并约束在IDisposable接口 - 在上述函数内部实现using关键词减少其他函数内部的反复调用,减少代码量降低耦合性
- 创建函数
TransactionHelper对此放大引用封装,通过第三方调用中间函数即可完成调用
函数结构
public static class MTransaction
{
public static void Using<TDisp>(TDisp disposable, Action<TDisp> f) where TDisp : IDisposable
{
using (disposable)
{
f(disposable);
}
}
}
public static class TransactionHelper
{
public static void Execute(Document doc, Action<IDisposable> f)
=> MTransaction.Using(new Transaction(doc, "create"), trans =>
{
trans.Start();
f(trans);
trans.Commit();
});
}
调用此方法
TransactionHelper.Execute(doc, c =>
{
var line = Line.CreateBound(new XYZ(0, 0, 0), new XYZ(2000 / 304.8, 2000 / 304.8, 0));
Wall w = Wall.Create(doc, line, new ElementId(311), false);
});