当前位置:网站首页>Revit 二次开发 HOF 方式调用transaction

Revit 二次开发 HOF 方式调用transaction

2022-07-06 08:37:00 Imkc

再看《C#函数式编程》一书的时候看到HOF的概念,感觉在日常开发的过程中可以使用此方式整理一个拓展方法,实现程序的快速调用。

  1. Transaction函数继承自IDisposable
  2. 我们平时开发需要使用using内部对Revit进行操作。实现自动拆卸
  3. 我们需要创建一个泛型函数MTransaction并约束在IDisposable接口
  4. 在上述函数内部实现using关键词减少其他函数内部的反复调用,减少代码量降低耦合性
  5. 创建函数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);
            });
原网站

版权声明
本文为[Imkc]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_41059339/article/details/125560263