簡體   English   中英

通用 C# - 如何使用反射將屬性分配給通用 class

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM