Reflector学习之特性理解

本文介绍了一个自定义属性ForeignAttribute的实现及其使用方式,并通过反射获取该属性实例来展示类LanguageTeacher的相关信息。
ExpandedBlockStart.gif 代码
    [AttributeUsage(AttributeTargets.All,AllowMultiple =   true ,Inherited =   false )]
    
public   class  ForeignAttribute:System.Attribute
    {
        
private   string  _languageType;

        
private   int  _languageLevel;

        
private   string  _languageInfo;

        
// 必须定义其构造函数,如果不定义 编译器提供无参默认构造函数
         public  ForeignAttribute()
        { 
        
        }

        
public  ForeignAttribute( string  languageType,  int  languagelevel)
        {
            _languageType 
=  languageType;

            _languageLevel 
=  languagelevel;
        
        }

        
public   string  LanguageType
        {

            
get  {  return  _languageType  ==   null   ?   string .Empty : _languageType; }
        }

        
public   int  LanguageLevel
        {
            
get  {  return  _languageLevel; }
        }

        
public   string  LanguageInfo
        {
            
get  {  return  _languageInfo; }

            
set  { _languageInfo  =  value; }
        
        }

        
public   void  CanSpeak()
        {
            Console.WriteLine(
" He can speak {0}. " , _languageType  ==   null   ?   " Chinese Only "  : _languageType);
        
        }
    }

 

ExpandedBlockStart.gif 代码
 [ReflectorDemo.Foreign( " English " , 8 ,LanguageInfo =   " This is US English,but not England English " )]
     
public   class  LanguageTeacher
    {
        
public   void  SayHello()
        {
            Console.WriteLine(
" Hello,I'm a Foreign Language teacher,I can speak Foreign Language. " );
        }
    }

    
// class Program
    
// {
    
//     static void Main(string[] args)
    
//     {
    
//         Type type = typeof(LanguageTeacher);

    
//         System.Reflection.MemberInfo memberinfo = type;

    
//         ReflectorDemo.ForeignAttribute can = (ReflectorDemo.ForeignAttribute)Attribute.GetCustomAttribute(memberinfo,typeof(ReflectorDemo.ForeignAttribute));

    
//         if (can != null)
    
//         {
    
//             Console.WriteLine("Class of LanguageTeacher Can Speak:" + can.LanguageType);

    
//             Console.WriteLine("The English Level of LanguageTeacher is:" + can.LanguageLevel);

    
//             Console.WriteLine("And," + can.LanguageInfo);
    
//         }

    
//          // 反射创建LanguageTeacher 对象,执行它的SayHello方法
    
//         Object obj = Activator.CreateInstance(type);

    
//         System.Reflection.MethodInfo mi = type.GetMethod("SayHello");

    
//         mi.Invoke(obj, null);
        
        
    
//     }
    
    
// }

 

转自:http://www.cnblogs.com/cnliu/archive/2010/02/25/1673384.html

转载于:https://www.cnblogs.com/johnwonder/archive/2010/02/25/1673816.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值