2014-02-22 90 views
0

的我有一個碼塊被隱式地添加變量的陣列,即重構隱變量賦值外陣列

context.People.Add( new Person { Name = "Joe", Age = 45 }, new Person { Name = "Alicia", Age = 33 });

我需要的是爲變量是外部接近代碼塊,即

var personJoe = new Person { Name = "Joe", Age = 45 }; 
var personAlicia = new Person { Name = "Alicia", Age = 33 }; 
context.People.Add(personJoe, personAlicia); 

這樣,當我需要進行分配,以具有與人的關係的另一個實體,我可以進入人的變量。

我的問題是,執行此重構的最簡單方法是什麼?我知道我可以複製/粘貼,但我擁有的塊大約有200行,我發現我經常需要這種重新分解。如果可能的話,我想避免付費解決方案(ReSharper),但如果這是使這個過程自動化的唯一方法,我會認真考慮它。

+0

問題是什麼? –

+0

更新了問題,以便更明確地瞭解我所要求的內容。 –

+0

Is * context * EntityFramework中的DbContext? – thepirat000

回答

1

對我來說,這只是一個簡介變量重構。 Visual Studio沒有內置此重構;但也可能是其他附加組件。如果您不想要付費解決方案,那麼重構包括複製/粘貼,然後添加一個變量並使用它。

要在Resharper(使用Visual Studio鍵盤方案)中執行此操作,只需簡單地選擇實例化Person的位置(例如new Person { Name = "Alicia", Age = 33 })並按Ctrl + R,V。

+0

您是否知道哪些付費解決方案實際上提供了此重構?我查看了Resharper的網站,但是我不清楚他們是否提供這個選項。 –

+0

Resharper擁有它(http://www.jetbrains.com/resharper/webhelp/Refactorings__Introduce_Variable.html或參見編輯)以及CodeRush(雖然他們稱之爲「引入結果變量」: https://documentation.devexpress .com /#CodeRush/CustomDocument2902或介紹本地:https://documentation.devexpress.com/CodeRush/CustomDocument1506.aspx) –

+0

Telerik的JustCode也有它:http://www.telerik.com/help/justcode/refactorings -introduce-variable.html –

1

我剛寫了這個CodeRush插件。 (花了大約20-30分鐘:))我認爲它符合你的要求。

Introduce Local (All arguments)

如果您已經安裝了的CodeRush可以Download it here

+0

Omg ...我沒有CodeRush,但這正是什麼我在尋找。不錯的作品 –

+0

當您知道如何爲CodeRush添加功能時非常容易:) 請參閱http://rorybecker.github。io/CodeRushPlugins/ –

+0

FWIW這個重構插件也可以在CodeRush試用版中使用,可以在這裏找到 - > https://www.devexpress.com/Products/CodeRush/ –