[英]Generic C# - how to use reflection to assign properties to generic class
我想为各种类赋值。 我将如何实现下面的代码会起作用?
T row = new T();
row[propertyName1] = "value 1";
row[propertyName2] = "value 2";
row[propertyName3] = "value 3";
我有各种各样的课。 我有每个 class 的属性名称和值。
我要做的是将数据库中的所有表值分配给类列表。 C# 中的所有类都与 SQL 中的表完全匹配。 实体框架执行此操作。 我想构建与 EF 相同的功能。
您可以使用反射来使用这样的东西:
using System.Reflection;
static void Test()
{
var list = new List<int>();
list.SetProperty("Capacity", 10);
}
static BindingFlags DefaultBindingFlags
= BindingFlags.Public
| BindingFlags.Static
| BindingFlags.Instance;
static void SetProperty<T>(this T instance, string name, object value)
//where T : ...
{
PropertyInfo p = instance.GetType().GetProperty("Capacity", DefaultBindingFlags);
if ( p != null )
p.SetValue(instance, value, null);
else
throw new Exception($"Property {name} doesn't exist.");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.