com.qsoft.commons.beanutils源代码(.net版本的org.apache.commons.beanutils)

com.qsoft.commons.beanutils源代码(.net版本的org.apache.commons.beanutils)


http://code.google.com/p/beanutils/downloads/list

仿照Apache开源项目org.apache.commons.beanutils(java)的.net版本,实现实体类的一些简化操作(比如实体类的复制,动态赋值,取值),提供动态实体类型,动态实体类,动态属性。

计划下一步实现对一些复杂对象的动态实体类的封装(比如DataReader,DataTable等)。实现其与动态实体类的转化操作,以及和自定义的静态实体类的转化操作(这个是org.apache.commons.beanutils没有支持的)。

 

 

点击下载源代码 

 

测试代码: 

  

using  System;
using  System.Collections.Generic;
using  System.Text;
using  com.qsoft.commons.beanutils;
using  System.Data; 

namespace  test_beanutils
... {
    
class Program
    
...{
        
static void Main(string[] args)
        
...{
            testclone(); 

            testDynaBean(); 


            testDataRow2Bean(); 


            Console.ReadKey(); 

        }
 

        
private static void testDataRow2Bean()
        
...{
            Console.WriteLine(
"测试动态DataTableUtil:"); 

            DataTable dt 
= new DataTable();
            dt.Columns.Add(
"id"typeof(int));
            dt.Columns.Add(
"name"typeof(string)); 

            DataRow row 
= dt.NewRow();
            row[
"id"= 100;
            row[
"name"= "Kimm King"

            
object obj = DataTableUtil.dataRow2Bean(row, typeof(MyBean));
            Console.WriteLine(obj);
            Console.WriteLine();
        }
 

        
private static void testDynaBean()
        
...{
            Console.WriteLine(
"测试动态Bean:"); 

            DynaProperty[] property 
= ...
                                    
new DynaProperty("id"typeof(string)), 
                                    
new DynaProperty("name"typeof(string)), 
                                    
new DynaProperty("email"typeof(string)) 


            }


            BasicDynaClass clazz 
= new BasicDynaClass("bean"null, property); 

            BasicDynaBean bean 
= new BasicDynaBean(clazz); 

            
//bean.set("qq", "100");
            bean.set("id""100");
            bean.
set("name""Kimm King");
            bean.
set("email""[email protected]"); 

            Console.WriteLine(bean);
            Console.WriteLine();
        }
 

        
private static void testclone()
        
...{
            Console.WriteLine(
"测试Bean的clone:");
            MyBean mb1 
= new MyBean();
            mb1.id 
= 100;
            mb1.name 
= "Kimm King"

            MyBean mb2 
= (MyBean)BeanUtils.cloneBean(mb1); 

            Console.WriteLine(mb2);
            Console.WriteLine();
        }

    }
 

    
public class MyBean
    
...{
        
private int _id; 

        
public int id
        
...{
            
get ...return _id; }
            
set ...{ _id = value; }
        }
 


        
private string _name; 

        
public string name
        
...{
            
get ...return _name; }
            
set ...{ _name = value; }
        }
 


        
public override string ToString()
        
...{
            
return "MyBean[id=" + _id.ToString() + ",name=" + _name + "]";
        }

    }

}
 

 

 

  

你可能感兴趣的:(com.qsoft.commons.beanutils源代码(.net版本的org.apache.commons.beanutils))