2011-03-21 49 views
2

是否有一些處理類的多個屬性的捷徑(比如50個spanning string,int,datetime等)。他們都具有相同的簡單聲明,如使用默認get/set主體創建多個屬性的快捷方式

private int myInt; 
public int MyInt 
{ get { return myInt; } 
    set { myInt = value; } 
} 

private datetime someDate; 
public datetime SomeDate 
{ get { return someDate; } 
    set { someDate = value; } 
} 

究其原因,是我有一個類,將被「綁定」到數據輸入文本類型的字段和這樣。通過只讓他們「公開」不起作用,因爲它不會綁定到一個字段,但如果它是一個適用的get/set屬性。我只是覺得經歷這樣的努力是一種痛苦,當它一遍又一遍地重複時,並且相信有一種更短/更簡化的方法。我只是沒有另外的導師學習,並知道S/O有很多幫助。

對於目前的情況,我在,需要我只與.net工作2.0最大...基於手持設備尚未能夠運行3.0,3.5,的一些限制等

+0

也許有一些ReSharper的魔力?(我從來沒有真正使用過Resharper,但是如果它像IDEA一樣,它可以重構任何東西,但這是另一個$工具,一次性生成器可能使用模板語言或簡單的Perl [或PowerShell; - ]腳本 - 扔一些名字,拿出一大堆copy'n'paste文本等等) – 2011-03-21 05:40:39

+1

請注意,您仍然可以使用C#3.0或更高版本的編譯器,並且定位.NET 2.0框架。然後,您可以使用編譯器的功能(例如自動實現的屬性),同時仍然創建.NET 2.0程序集。 – 2011-05-06 09:42:28

回答

11

在C#3或更高版本,可以使用auto-implemented properties

public int MyInt { get; set; } 
+0

每筆記編輯,我目前卡住了2.0 :( – DRapp 2011-03-21 03:09:30

+0

雖然它可以幫助我的未來,我會給它信貸,我想我已經在個別申報正確的軌道上 – DRapp 2011-03-21 14:32:27

3

嘗試CTRL + R + E在場上。

查看更多this blog post的快捷方式。

+0

注意:一次不能多於一個。 – 2011-03-21 02:54:42

3

而不是使用字段使用屬性來開始:

public int MyInt { get; set } 
public DateTime SomeDate { get; set; } 
+0

我是使用屬性,但顯然不能做你的例子,我得到的錯誤,「身體」是必需的獲取和設置,因此我詳細的代碼示例提供。 – DRapp 2011-03-21 03:10:38

+0

對,沒有看到你使用.Net 2,所以不會工作。其他的答案會讓你成爲那裏的一部分! – 2011-03-21 03:11:50

4

在VS2010 & 2008年,你可以右鍵點擊私人字段中,選擇Refactor-> Encapsulate Field。

你仍然需要逐場做,但它有一些智慧(關於選擇公開可查看的名稱),你可以做到這一切,沒有打字。

後續行動:我看到Josh M的答案顯示了鍵盤快捷鍵可以做同樣的事情。

0

我不認爲有創建字段的任何快捷方式(手動輸入它除外),儘管可以爲類中的「現有」字段創建屬性。因此,在這種情況下,您將寫入50個字段,然後您可以要求VS爲您自動生成屬性。更好的是,如果你有Resharper(我認爲,alt + insert會完成這項工作)。

如果您有列/字段及其類型的列表,則可以使用CodeDom。然後自動生成整個班級,所有的字段和屬性都基於您提供的列的列表。

+0

那麼,VS中有很多快捷方式可以滿足你想象的所有事情。http://www.dev102.com/2008/04/17/10-visual-工作室快捷方式 - 你 - 必知/ – 2011-03-21 03:13:15

0

你說你被困在.NET 2.0中。請注意,您可以使用一些C#3.0功能,但仍以.NET 2.0 Framework爲目標。所以只要您使用VS2008並將目標設置爲.NET 2.0,您就可以使用自動導航(以及其他一些C#3.0的酷炫功能)。下面是關於這個主題一堆鏈接:

http://weblogs.asp.net/shahar/archive/2008/01/23/use-c-3-features-from-c-2-and-net-2-0-code.aspx

http://www.danielmoth.com/Blog/Using-Extension-Methods-In-Fx-20-Projects.aspx

http://www.developer.com/net/csharp/article.php/3598381/The-New-Lambda-Expressions-Feature-in-C-30.htm

-1

propfull然後按TAB鍵兩次