从反射到在c#中列出的动态属性
我想将以下内容转换为列表。我已经使用反射获取了属性,但是如何将它们转换为list(在我的例子中,这是实体对象DBSet) 我需要结果作为列表从反射到在c#中列出的动态属性,c#,C#,我想将以下内容转换为列表。我已经使用反射获取了属性,但是如何将它们转换为list(在我的例子中,这是实体对象DBSet) 我需要结果作为列表 ClassObject.GetType().GetProperty(classname) //After getting property I need it in .ToList() 您可以使用这样的函数进行转换 如果反射对象不可枚举,则无法转换 public static List<T> ConvertMysteriousObjectTo
ClassObject.GetType().GetProperty(classname) //After getting property I need it in .ToList()
您可以使用这样的函数进行转换 如果反射对象不可枚举,则无法转换
public static List<T> ConvertMysteriousObjectToList<T>(object input)
{
var enumerable = input as IEnumerable;
if (enumerable == null) throw new InvalidOperationException("The object is not convertible to a list.");
return enumerable.Cast<T>().ToList();
}
公共静态列表对象列表(对象输入)
{
var enumerable=输入为IEnumerable;
如果(enumerable==null)抛出新的InvalidOperationException(“该对象无法转换为列表”);
返回可枚举的.Cast().ToList();
}
如果您试图转换某种风格的DbSet(例如aDbSet
),那么您可以这样称呼它:
var o = ClassObject.GetType().GetProperty(classname);
var list = ConvertMysteriousObjectToList<Foo>(o);
var o=ClassObject.GetType().GetProperty(classname);
var list=convertousObjectToList(o);
如果您不知道类型:
var list = ConvertMysteriousObjectToList<object>(o);
var list=convertousObjectToList(o);
或
var list=convertousObjectToList(o);
我得到了我想要的
static IEnumerable GetAllMembers(DbContext db, string dbSetName)
{
var pi = db.GetType().GetProperty(dbSetName);
return (IEnumerable)pi.GetValue(db);
}
资料来源:
为什么您想要一个包含单个元素的列表?您在转换什么?嗨,我在编译时没有“Foo”。那么我想您需要一个
列表
或列表
。我提供的代码仍然适用于这些类型。
static IEnumerable GetAllMembers(DbContext db, string dbSetName)
{
var pi = db.GetType().GetProperty(dbSetName);
return (IEnumerable)pi.GetValue(db);
}