zoukankan      html  css  js  c++  java
  • 反射的应用

    Imports System.Reflection
    Module Module1
    Sub Main()
    Dim p As New Person
    p.Name
    = "cuishengli"
    p.Age
    = 30
    p.Tall
    = 1.78
    p.Birth
    = "1978-09-18"

    Console.WriteLine(
    "dict:")
    Dim dict = GetInformation(p)
    For Each i In dict
    Console.WriteLine(
    "key={0};Value={1}", i.Key, i.Value)
    Next

    Console.WriteLine(
    "P2:")
    Dim p2 = Create(Of Person)(dict)
    Console.WriteLine(p2.ToString)

    Console.ReadLine()
    End Sub

    Function Create(Of T As New)(dict As Dictionary(Of String, String)) As T
    Dim obj As New T
    Dim tp As Type = GetType(T)
    For Each pi In tp.GetProperties
    Select Case pi.PropertyType.Name
    Case "String"
    pi.SetValue(obj, dict(pi.Name),
    Nothing)
    Case "Double"
    pi.SetValue(obj,
    CDbl(dict(pi.Name)), Nothing)
    Case "Int32"
    pi.SetValue(obj,
    CInt(dict(pi.Name)), Nothing)
    Case "DateTime"
    pi.SetValue(obj,
    Date.Parse(dict(pi.Name)), Nothing)
    Case Else
    Throw New Exception("create 不能处理类型:" & pi.PropertyType.Name)
    End Select
    Next
    Return obj
    End Function

    Function GetInformation(obj As Object) As Dictionary(Of String, String)
    Dim dict As New Dictionary(Of String, String)
    Dim tp = obj.GetType
    For Each pi In tp.GetProperties
    dict.Add(pi.Name, pi.GetValue(obj,
    Nothing))
    Next
    Return dict
    End Function

    End Module
  • 相关阅读:
    jenkins无法显示html样式问题解决
    自定的 HttpModule 为什么总是执行两次
    符号服务器
    ThreadContext
    ThreadContext
    从代码看 asp.net 处理过程
    关于动态编译
    System.Web.HttpContext.Current 跟踪分析
    使用另一种方式实现会话功能
    for 与 foreach 性能
  • 原文地址:https://www.cnblogs.com/cuishengli/p/1999143.html
Copyright © 2011-2022 走看看