2014-04-27 10 views
5

Czy istnieje prosty sposób na refaktoryzację pola/właściwości typu T na Leniwe i zastąpienie wszystkich zastosowań tego pola w celu użycia wartości FieldName.Value?Pole Refaktora resharpera typu T na Lazy <T>

Mam kontroler z wieloma zależnościami, które są przechowywane w prywatnych polach zaplecza, ale tylko kilka z zależności są potrzebne na danym wywołanie funkcji. Aby przyspieszyć budowę tego kontrolera, chciałbym wprowadzić wszystkie zależności Lazy, ale to tylko irytująca ilość pracy do zrobienia ręcznie. Jakakolwiek rada?

+2

Myślę, że najłatwiej jest jeśli jest to pole, Refactor do nieruchomości. następnie, w geterze, zmień pole podkładu na 'Lazy ' i zwróć jego właściwość 'Value' w tym pobierającym. tj. nie ma do tego konkretnego refaktoryzacji. –

Odpowiedz

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 =>.Value

2

jeśli wcześniej miałeś,

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

następnie można je leniwy załadowany, bez wpływu na rozmówców, co następuje:

public class LazyClass 
{ 
private Lazy<MyType> myType = new Lazy<MyType>(() => new MyType()); 

public MyType MyTypeProperty 
{ 
    get { return this.myType.Value; } 
} 
} 

Wątpię, czy Resharper ma ten ponowny faktoring wbudowany. w każdym razie, nie chcesz, aby wszyscy dzwoniący wiedzieli, że to Lazy i nazywają to jako LazyType.Value. nie wystawiaj leniwego typu.

+0

Aby wyjaśnić, pola, które będę zmieniać są prywatne dla klasy, więc myślę, że to w porządku, aby mieć je czyste Lazy i nie zapakowane przez akcesorium nieruchomości. Gdybym miał zewnętrzne właściwości, absolutnie użyłbym tej metody. – hermitt

Powiązane problemy