简单的反射

想起来研究下简单的反射,然后就在网上找了点资料,也找了点代码,大致如下:

 public static void PrintProperties<T>(T t)
        {
            if (t == null)
            {
                return;
            }

            PropertyInfo[] properties = t.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public);
            if (properties.Length <= 0)
            {
                return;
            }

            foreach (PropertyInfo item in properties)
            {
                string name = item.Name;
                object value = item.GetValue(t, null);
                if (item.PropertyType.IsValueType || item.PropertyType.Name.StartsWith("String"))
                {
                    Console.WriteLine("{0}:{1}", name, value);
                }
                else
                {
                    foreach (PropertyInfo itemsub in value.GetType().GetProperties())
                    {

                        PrintProperties(value);
                    }
                }
            }
        }
时间: 2024-10-19 16:22:18

简单的反射的相关文章

一(3)抽象工厂模式&amp;&amp;简单工厂+反射改进抽象工厂

1 抽象工厂? 抽象工厂用在既有产品树,又有产品族的场合. 产品树:奔驰旗下的跑车和商务车构成产品树 产品族:奔驰旗下的跑车与奥迪旗下的跑车构成产品族./*缺点:此时如果需要增加一个红旗厂家的车,需要改的地方很多.1 定义红旗抽象类,具体类:2 Factory接口增加生产红旗的工厂:3 跑车工厂和商务车工厂都需要实现相应的生产红旗的接口.*//* 优点:当需要使用不同产品时,只需要改一行代码 Factory factory = new SprotCarFactory();,即初始化不同的工厂,就

设计模式学习之简单工厂+反射+配置文件

3.用反射+配置文件的方法重新实现大话设计模式课本上15章15.7的例题 问题分析:相比抽象工厂,用DataAccess类代替了工厂接口以及工厂类,再加上使用反射+配置文件的方式,可以做到不对编译好的程序作出改变就能修改数据库种类,客户端可以只是用DateAccess进行数据库访问实例的创建,达到了解耦的目的. UML图: package com.cmc; //用户数据类 public class User { private int id; private String name; publi

复习笔记:一个简单的反射工厂Demo

项目根目录创建一个properties文件: Apple = cn.gry.vo.Apple Orange = cn.gry.vo.Orange 创建接口: interface Fruit{ public void eat() ; } 创建两个vo类: class Apple implements Fruit{ public void eat(){ System.out.println("吃苹果") ; } } class Orange implements Fruit{ public

u3d_Shader_effects笔记6 第四章 使用cubeMap简单的反射读取

一:前面心情: 1.今天开了个小会,该看的继续要看,不要堕落. 2.还有就是丽的生活习惯不太好.慢慢改变. 3.哎,公司人员争夺吗?哎,不知道,不了解,不去想,提升自己,内心明净 二.主要内容和参考 这篇内容以前做过.再来一次. 内容:静态cubeMap的制作   , 使用cubeMap实现反射效果 参考:书本88-96p   博客http://blog.csdn.net/candycat1992/article/details/21827365# unity文档 三.实现 四.学到什么 1.c

一个简单的反射连接程序(修改文件时间,以及创建Windows服务)

program SvrDemo; uses  Windows,  WinSvc,  winsock; const  RegName = 'SvrDemo'; var  szServiceName: pchar = 'SvrDemo';  szFileName:pchar;  ServiceTable: array [0..1] of TServiceTableEntry;  Status: SERVICE_STATUS;  StatusHandle: SERVICE_STATUS_HANDLE;

C# 简单的反射机制实例

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Reflection; using System.Collections; using ConsoleApplication1; using ConsoleApplication2; namespace ConsoleApplication3 { class Program { static void

简单的反射Demo

1 private void button1_Click(object sender, EventArgs e) 2 {//计时器 3 System.Diagnostics.Stopwatch watcher = new System.Diagnostics.Stopwatch(); 4 //开启计时器 5 watcher.Start(); 6 Users user = new Users(); 7 user.Name = "sa"; 8 user.Password = "1

Dapper简单实用和反射的初步尝试

方便测试,创建Console项目,将SqlMapper.cs文件添加到项目中 所有内容我都写在Program.cs文件中 首先做好准备工作,定义连接字符串.打开数据库连接方法.实体类.查询方法. // 定义连接字符串 static private readonly string sqlconnection = "Data Source=192.168.1.10;Initial Catalog=Test;User Id=sa;Password=sa;"; // 打开数据库连接 stati

GO语言练习:反射

列举几个反射的例子:1)简单类型反射,2)复杂类型反射,3)对反射回来的数据的可修改属性 1.简单类型反射 1.1)代码 package main import ( "fmt" "reflect" ) func main() { var x float64 = 3.4 v := reflect.ValueOf(x) fmt.Println("type :", v.Type()) fmt.Println("kind is float64: