[英]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.