zhaolei
2020-11-20 921de2254ff5712a44ed8575ee8efe34252f6603
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
using System;
using System.Reflection;
 
namespace PetaPoco.Core
{
    public class PocoColumn
    {
        public bool AutoSelectedResultColumn;
        public string ColumnName;
        public bool ForceToUtc;
        public PropertyInfo PropertyInfo;
        public bool ResultColumn;
        public string InsertTemplate { get; set; }
        public string UpdateTemplate { get; set; }
 
        public virtual void SetValue(object target, object val)
        {
            PropertyInfo.SetValue(target, val, null);
        }
 
        public virtual object GetValue(object target)
        {
            return PropertyInfo.GetValue(target, null);
        }
 
        public virtual object ChangeType(object val)
        {
            var t = PropertyInfo.PropertyType;
            if (val.GetType().IsValueType && PropertyInfo.PropertyType.IsGenericType && PropertyInfo.PropertyType.GetGenericTypeDefinition() == typeof(Nullable<>))
                t = t.GetGenericArguments()[0];
 
            return Convert.ChangeType(val, t);
        }
    }
}