2014-04-27 28 views
5

T türüne sahip bir alan/mülkün Tembel olması ve bu alanın tüm kullanım alanlarının yerine FieldName.Value kullanılması için kolay bir yol var mı?Resharper T tipi için T tipi Refraktör alanı <T>

Özel destek alanlarında saklanan bir grup bağımlılıkla birlikte bir denetleyicim var, ancak belirli bir işlev çağrısında bağımlılıklardan yalnızca birkaçı gerekiyor. Bu denetleyicinin yapımını hızlandırmak için, tüm bağımlılıkları Tembel yapmak istiyorum, ancak el ile yapılacak rahatsız edici bir iş. Herhangi bir tavsiye?

+2

Ben bir alan refactor bir mülke ise en kolay olduğunu düşünüyorum. Daha sonra, alıcıda, yedekleme alanını bir "Lazy " olarak değiştirin ve bu değerdeki "Value" özelliğini döndürün. yani bunun için spesifik bir refaktör yoktur. –

cevap

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

önce sen olsaydı,

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

o zaman aşağıdaki şekilde arayanları etkilemeden, bu tembel yüklü yapabilirsiniz:

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

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

i Resharper inşa Bu yeniden faktoring varsa şüpheliyim. Her neyse, tüm arayanların bunu bilmesini istemezsiniz Tembeldir ve ona LazyType.Value olarak bakın. Tembel türünü gösterme.

+0

Açıklığa kavuşturmak için, değiştireceğim alanlar sınıfa özeldir, bu yüzden onları Lazir'e sahip olmak ve mülk sahibi tarafından sarılmamak iyi olur. Dışsal özelliklere sahip olsaydım, kesinlikle bu yöntemi kullanırdım. – hermitt