中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > .NET > 临时文章
(论坛答疑点滴)如何动态设定类的属性和字段?
作者:未知 时间:2005-07-27 21:45 出处:CSDN 责编:chinaitpower
              摘要:(论坛答疑点滴)如何动态设定类的属性和字段?

正好有人问这个,代码非常简单,最基本的应用,直接贴代码

using System;

namespace Test
{
    
/// <summary>
    
/// Class1 的摘要说明。
    
/// </summary>

    class Class1
    
{
        
/// <summary>
        
/// 应用程序的主入口点。
        
/// </summary>

        [STAThread]
        
static void Main(string[] args)
        
{
            
//
            
// TODO: 在此处添加代码以启动应用程序
            
//
            MyFieldClass dv=new MyFieldClass();
            System.Collections.Hashtable ht1
=new System.Collections.Hashtable();
            ht1.Add(
"FieldA","A");
            ht1.Add(
"FieldC","C");
            SetField1(ht1,dv);
//如果类中的字段匹配Hashtable中的Key则重新设定
            
//SetField2(ht1,dv)//如果Hashtable中的Key匹配类中的字段则重新设定,效果等同于SetField1
            Console.WriteLine(dv.FieldA);//A
            Console.WriteLine(dv.FieldB);//bb
            Console.WriteLine(dv.FieldC);//C
            System.Collections.Hashtable ht2=new System.Collections.Hashtable();
            ht2.Add(
"PropertyB","b");
            ht2.Add(
"PropertyC","c");
            SetProperty1(ht2,dv);
//如果类中的属性匹配Hashtable中的Key则重新设定
            
//SetProperty2(ht2,dv);//如果Hashtable中的Key匹配类中的属性则重新设定,效果等同于SetProperty1
            Console.WriteLine(dv.FieldA);//A
            Console.WriteLine(dv.FieldB);//b
            Console.WriteLine(dv.FieldC);//c
            
        }


        
public static void SetProperty1(System.Collections.Hashtable ht1,MyFieldClass dv)
        
{
            
foreach(System.Collections.DictionaryEntry de in ht1)
            
{
                System.Reflection.PropertyInfo pi
=dv.GetType().GetProperty(de.Key.ToString());
                
if(pi!=null)pi.SetValue(dv,de.Value.ToString(),null);
            }

        }


        
public static void SetProperty2(System.Collections.Hashtable ht1,MyFieldClass dv)
        
{
            
foreach(System.Reflection.PropertyInfo pi in dv.GetType().GetProperties())
            
{
                
if(ht1.Contains(pi.Name))pi.SetValue(dv,ht1[pi.Name],null);
            }

        }


        
public static void SetField1(System.Collections.Hashtable ht2,MyFieldClass dv)
        
{
            
foreach(System.Collections.DictionaryEntry de in ht2)
            
{
                System.Reflection.FieldInfo fi
=dv.GetType().GetField(de.Key.ToString());
                
if(fi!=null)fi.SetValue(dv,de.Value.ToString());
            }

        }


        
public static void SetField2(System.Collections.Hashtable ht2,MyFieldClass dv)
        
{
            
foreach(System.Reflection.FieldInfo fi in dv.GetType().GetFields())
            
{
                
if(ht2.Contains(fi.Name))fi.SetValue(dv,ht2[fi.Name]);
            }

        }

    }


    
public class MyFieldClass
    
{
        
public string FieldA="aa";
        
public string FieldB="bb";
        
public string FieldC="cc";

        
public string PropertyA
        
{
            
get
            
{
                
return FieldA;
            }

            
set
            
{
                FieldA
=value;
            }

        }


        
public string PropertyB
        
{
            
get
            
{
                
return FieldB;
            }

            
set
            
{
                FieldB
=value;
            }

        }


        
public string PropertyC
        
{
            
get
            
{
                
return FieldC;
            }

            
set
            
{
                FieldC
=value;
            }

        }

    }


}


关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有