5

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

我有一个控制器,其中包含一堆存储在私有支持字段中的依赖项,但是在任何给定的函数调用中只需要一些依赖项。为了加快这个控制器的构建,我想让所有的依赖都变得懒惰,但这只是一个令人讨厌的手工工作量。有什么建议吗?

4

2 回答 2

4
  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 => .值

于 2014-05-20T09:33:53.720 回答
2

如果你以前有,

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. 不要暴露 Lazy 类型。

于 2014-04-27T19:42:44.533 回答