• Activator.CreateInstance 方法 (Type)和Class1 obj=new Class1()方法实例化


    需要动态的创建一个实例模型的时候,就用Activator.CreateInstance(Type type);

    如果是明确的知道要创建哪个实例的模型,就可以用 new Class1()了。

    也可以通过程序集Assembly.CreateInstance()来创建,不过其实程序集创建也是调用的Activator.CreateInstance(Type type)。

    代码
    public static object GetFromDataTable(DataTable dt, Type objectType, int row)
    {
    if (dt == null)
    {
    return null;
    }
    if (dt.Rows.Count <= row)
    {
    return null;
    }

    object obj = Activator.CreateInstance(objectType);

    PropertyInfo[] props
    = objectType.GetProperties(BindingFlags.Public | BindingFlags.Instance);

    foreach (DataColumn dc in dt.Columns)
    {
    foreach (PropertyInfo p in props)
    {
    if (p.Name.Equals(dc.ColumnName, StringComparison.OrdinalIgnoreCase))
    {
    if (!dt.Rows[row].IsNull(dc.ColumnName))
    {
    object destObj = dt.Rows[row][dc.ColumnName];

    bool succ = false;

    if (p.PropertyType == destObj.GetType())
    {
    succ
    = true;
    }
    else
    {
    if (p.PropertyType == typeof(int))
    {
    succ
    = true;
    int tmpInt = 0;
    int.TryParse(destObj.ToString(), out tmpInt);
    destObj
    = tmpInt;
    }
    else if (p.PropertyType == typeof(long))
    {
    succ
    = true;
    long tmpLong = 0;
    long.TryParse(destObj.ToString(), out tmpLong);
    destObj
    = tmpLong;
    }
    else if (p.PropertyType == typeof(bool))
    {
    succ
    = true;
    bool tmpBool = false;
    bool.TryParse(destObj.ToString(), out tmpBool);
    destObj
    = tmpBool;
    }
    else if (p.PropertyType == typeof(DateTime))
    {
    succ
    = true;
    DateTime tmpDateTime;
    DateTime.TryParse(destObj.ToString(),
    out tmpDateTime);
    destObj
    = tmpDateTime;
    }
    else if (p.PropertyType == typeof(float))
    {
    succ
    = true;
    float tmpFloat;
    float.TryParse(destObj.ToString(), out tmpFloat);
    destObj
    = tmpFloat;
    }
    else if (p.PropertyType == typeof(decimal))
    {
    succ
    = true;
    decimal tmpDecimal;
    decimal.TryParse(destObj.ToString(), out tmpDecimal);
    destObj
    = tmpDecimal;
    }
    else if (p.PropertyType == typeof(double))
    {
    succ
    = true;
    double tmpDouble;
    double.TryParse(destObj.ToString(), out tmpDouble);
    destObj
    = tmpDouble;
    }
    else if (p.PropertyType == typeof(char))
    {
    succ
    = true;
    char tmpChar;
    char.TryParse(destObj.ToString(), out tmpChar);
    destObj
    = tmpChar;
    }
    else if (p.PropertyType == typeof(Int16))
    {
    succ
    = true;
    Int16 tmpInt16;
    Int16.TryParse(destObj.ToString(),
    out tmpInt16);
    destObj
    = tmpInt16;
    }
    else
    {
    succ
    = false;
    }
    }
    if(succ)
    {
    p.SetValue(obj, destObj,
    null);
    }
    }
    }
    }
    }

    return obj;
    }

  • 相关阅读:
    PageRank
    Map-Reduce基础
    Docker Hadoop LAMP安装配置教程
    HDFS Architecture
    Goole Search Auto Complete
    TopK-微博今日热门话题
    Hadoop开发环境搭建
    文本数据挖掘 Matrix67: The Aha Moments
    神经风格转换Neural Style Transfer a review
    神经风格转换 (Neural-Style-Transfer-Papers)
  • 原文地址:https://www.cnblogs.com/JinvidLiang/p/1871569.html
Copyright © 2020-2023  润新知