将T类型的重构器字段重新划分为Lazy<;T>;

本文关键字:划分 lt gt Lazy 重构 类型 字段 新划分 | 更新日期: 2023-09-27 18:00:28

有没有一种简单的方法可以将类型为T的字段/属性重构为Lazy,并将该字段的所有用法替换为使用FieldName.Value?

我有一个控制器,它有一堆存储在专用支持字段中的依赖项,但任何给定的函数调用都只需要其中的几个依赖项。为了加快这个控制器的构建,我想让所有的依赖项都变得懒惰,但手工操作的工作量太大了。有什么建议吗?

将T类型的重构器字段重新划分为Lazy<;T>;

  1. Tools>Create GUID

  2. Resharper>Refactor>Rename

    Foo=>Foo_299E4ADB-5770-458C-B030-E40E19B0FFAF

  3. Edit>Find and Replace>Replace in Files

    _299E4ADB-5770-458C-B030-E40E19B0FFAF=>.值

如果以前有,

public class LazyClass
{
 // initialized in constructor etc.
 public MyType MyTypeProperty { get; set; }
}

然后您可以使其延迟加载,而不会影响调用方,如下所示:

public class LazyClass
{
 private Lazy<MyType> myType = new Lazy<MyType>(() => new MyType());
 public MyType MyTypeProperty
 {
  get { return this.myType.Value; }
 }
}

我怀疑Resharper是否内置了这种重新分解。无论如何,你不希望所有调用方都知道它是Lazy并将其称为LazyType.Value。不要暴露懒惰型。