繁体   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