using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
Product p = new Product();
//
p.Id = 12;
p.Name = "apple";
Console.WriteLine(p.ToString());
//获取
int para = -1;
if (GetProperty<int>(p,"Id",out para))
{
Console.WriteLine("Id is "+para.ToString());
}
string str = "";
if (GetProperty<string>(p, "Name", out str))
{
Console.WriteLine("Name is "+ str.ToString());
}
//设置
if (SetProperty<int>(p,"Id",50))
{
Console.WriteLine(p.ToString());
}
if (SetProperty<string>(p, "Name", "Orange"))
{
Console.WriteLine(p.ToString());
}
Console.ReadLine();
}
public static bool SetProperty<T>(object obj,string propertyName,T value)
{
try
{
PropertyInfo p1 = obj.GetType().GetProperty(propertyName);
p1.SetValue(obj, value);
return true;
}
catch (Exception)
{
return false;
}
}
public static bool GetProperty<T>(object obj, string propertyName, out T value)
{
value = default(T);
try
{
PropertyInfo p1 = obj.GetType().GetProperty(propertyName);
value= (T)p1.GetValue(obj, null);
return true;
}
catch (Exception)
{
return false;
}
}
}
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public override string ToString()
{
return "Name is "+Name+ " Id is " + Id.ToString();
}
}
}