我正在尝试接受泛型参数,通过Reflection操纵它的属性,然后返回带有修改属性的泛型类型。
public IEnumerable<T> GenerateTest()
{
var type = typeof(T);
foreach (var field in type.GetProperties())
{
// Modify / Set properties on variable type
}
// How do I return object T with the parameters that I modified in the iteration above?
}
答案 0 :(得分:1)
为了能够创建新的T
对象,您需要将new()
约束添加到type参数:
class MyClass<T> where T : new()
{
public IEnumerable<T> GenerateTest()
{
然后,您可以创建一个新的T
对象并设置其属性:
var obj = new T();
foreach (var field in typeof(T).GetProperties())
{
field.SetValue(obj, ...);
}
因为您的方法返回IEnumerable<T>
,所以您无法直接返回T
对象,但需要将其包装在集合中:
var list = new List<T>();
list.Add(obj);
return list;
}
}