技术开发 频道

使用Visual Studio 2005 IDE的宏,自动为c#变量生成属性

 
  我定义了两个Public方法:EncapsulateField和EncapsulateAllFields,分别用于为类的一个变量封装属性,或者为类中所有的变量(非静态)封装属性。

使用上面的宏的方法很简单,选择“工具”>“宏”>“宏资源管理器”就可以看到我们已经创建的宏方法,如下图所示:


假如你已经编写了这样一段代码:
using System;
using System.Collections.Generic;
using System.Text;

namespace Demo
{
    
public class Person
    {
        
private int _id;
        
private string _name;
        
private DateTime _birthDay;
    }
}

将光标移到“_name”变量上,然后双击“EncapsulateField”宏,就运行了该宏。运行后,你可以得到这样的代码:
using System;
using System.Collections.Generic;
using System.Text;

namespace Demo
{
    
public class Person
    {
        
private int _id;
        
private string _name;
        
private DateTime _birthDay;

        
public string Name
        {
            
get
            {
                
return _name;
            }
            
set
            {
                _name 
= value;
            }
        }
    }
}

可以看到“EncapsulateField”宏已经为private string _name;创建了相应的属性。
EncapsulateAllFields宏只需要将光标放在Person类的代码区域中,就可以正常执行。例如针对上面的代码,EncapsulateAllFields后可以为Person类中的每一个变量都生成相应的属性。(注:上面的代码中Name属性已经有定义,所有试图再添加Name属性时会抛出异常,在EncapsulateAllFields宏定义中,已经将该异常吃掉,所以,可以正确地为所有变量生成属性)。运行后的代码如下:
using System;
using System.Collections.Generic;
using System.Text;

namespace Demo
{
    
public class Person
    {
        
private int _id;
        
private string _name;
        
private DateTime _birthDay;

        
public string Name
        {
            
get
            {
                
return _name;
            }
            
set
            {
                _name 
= value;
            }
        }

        
public int Id
        {
            
get
            {
                
return _id;
            }
            
set
            {
                _id 
= value;
            }
        }

        
public System.DateTime BirthDay
        {
            
get
            {
                
return _birthDay;
            }
            
set
            {
                _birthDay 
= value;
            }
        }
    }
}

0
相关文章