[VS 2010]Generate From Usage

[VS 2010]Generate From Usage

Introduction

Generate From Usage是VS2010的新功能,其能讓使用者先使用類別與成員,事後再去定義它。這種特性對於TDD的開發方式特別有幫助、因為我們可以在撰寫單元測試的同時,利用Generate From Usage功能產生對應的程式框架。透過Generate From Usage產生程式的同時,焦點仍會保持在原本的程式編輯視窗,使用上十分方便。

 

Generate From Usage在使用上我們可以透過把滑鼠移至小波浪下的小底線,或是把焦點設到波浪處後,按下熱鍵Ctrl+.。

image

 

接著在彈出的圖示上按下滑鼠左鍵,並在快顯選單中選取所需使用的功能即可。

image

 

除此之外,也可以在小波浪處按下滑鼠右鍵,移至[Generate],並選取所需使用的功能。

image

 

若選用New Type…,則會彈出Generate New Type視窗,提供進階的設定。

image

 

Generate Class

當宣告物件的類別在專案中找不到時,我們可透過Generate From Usage的Generate Class來替我們產生。

image

 

使用後,專案會自動幫我們產生類別檔
 


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Generate_From_Usage
{
    class Person
    {
    }
}

 

 

Generate Property

當物件的屬性不存在時,我們可透過Generate From Usage的Generate Property來替我們產生。

image

 

使用後,會幫我們產生對應的屬性


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Generate_From_Usage
{
    class Person
    {
        public string Name { get; set; }
    }
}

 

若要產生靜態的屬性,我們可以透過"類別.屬性名稱"來作Generate Property

image

 

使用後,靜態的屬性就產生了
 


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Generate_From_Usage
{
    class Person
    {
        public string Name { get; set; }
        public static string StaticProperty { get; set; }
    }
}

 

Generate Field

當物件的欄位不存在時,我們可透過Generate From Usage的Generate Field來替我們產生。

image

 

使用後,會幫我們產生對應的欄位


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Generate_From_Usage
{
    class Person
    {
        private string _name;
        public string Name { get{return _name;} set; }
    }
}

 

若要產生靜態的欄位,我們可以像下圖這般作Generate Field

image

 

使用後,靜態的欄位就產生了
 


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Generate_From_Usage
{
    class Person
    {
        private string _name;
        private static string _staticField;
        public string Name { get{return _name;} set; }

        public static string StaticProperty { get { return _staticField; } set; }
    }
}

 

也可以透過"類別.欄位名稱"來作Generate Field

image

 

同樣的,我們也可以產生靜態的欄位,只是存取範圍不同而已。


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Generate_From_Usage
{
    class Person
    {
        private string _name;
        private static string _staticField;
        public static string StaticField;
        public string Name { get{return _name;} set; }

        public static string StaticProperty { get { return _staticField; } set; }
    }
}

 

Generate Constructer

當物件的建構子不存在時,我們可透過Generate From Usage的Generate Constructer來替我們產生。

image

image

 

使用後,會幫我們產生對應的建構子
 


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Generate_From_Usage
{
    class Person
    {
        private string Name;
        private int Yesr;

        public Person(string Name, int Yesr)
        {
            // TODO: Complete member initialization
            this.Name = Name;
            this.Yesr = Yesr;
        }
    }
}

 

Generate Method

當物件的方法不存在時,我們可透過Generate From Usage的Generate Method來替我們產生。

image

 

使用後,會幫我們產生對應的方法
 


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Generate_From_Usage
{
    class Person
    {
        internal void SayHello()
        {
            throw new NotImplementedException();
        }
    }
}

 

若要產生靜態的方法,我們可以像下圖這般作Generate Method

image

 

使用後,靜態的方法就產生了
 


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Generate_From_Usage
{
    class Person
    {
        internal void SayHello()
        {
            throw new NotImplementedException();
        }

        internal static void StaticSayHello()
        {
            throw new NotImplementedException();
        }
    }
}

 

Link