mirror of
https://github.com/kwsch/PKHeX.git
synced 2026-05-27 01:24:31 -05:00
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).
39 lines
1.3 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|