PKHeX/Util/ReflectUtil.cs
Kaphotics 760468fcae Add more user friendly command building
Thanks \ for the suggestion; user has to enter in the value (true/false,
integer).

Provides a list of properties for a pkm file that have setters
(CanWrite).
2016-07-17 17:06:50 -07:00

39 lines
1.3 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
namespace PKHeX
{
public static class ReflectUtil
{
internal static bool GetValueEquals(object obj, string propertyName, object value)
{
PropertyInfo pi = obj.GetType().GetProperty(propertyName);
var v = pi.GetValue(obj, null);
var c = Convert.ChangeType(value, pi.PropertyType);
return v.Equals(c);
}
internal static void SetValue(object obj, string propertyName, object value)
{
PropertyInfo pi = obj.GetType().GetProperty(propertyName);
pi.SetValue(obj, Convert.ChangeType(value, pi.PropertyType), null);
}
internal static object GetValue(object obj, string propertyName)
{
PropertyInfo pi = obj.GetType().GetProperty(propertyName);
return pi.GetValue(obj, null);
}
internal static IEnumerable<string> getPropertiesStartWithPrefix(Type type, string prefix)
{
return type.GetProperties()
.Where(p => p.Name.StartsWith(prefix))
.Select(p => p.Name);
}
internal static IEnumerable<string> getPropertiesCanWrite(Type type)
{
return type.GetProperties().Where(p => p.CanWrite).Select(p => p.Name);
}
}
}