gpt4 book ai didi

c# - 使用反射创建通用 List

转载 作者:太空狗 更新时间:2023-10-29 22:06:38 26 4
gpt4 key购买 nike

我有一个属性为 IEnumerable<T> 的类.如何创建一个通用方法来创建一个新的 List<T>并分配该属性?

IList list = property.PropertyType.GetGenericTypeDefinition()
.MakeGenericType(property.PropertyType.GetGenericArguments())
.GetConstructor(Type.EmptyTypes);

我不知道T在哪里类型可以是任何东西

最佳答案

假设您知道属性名称,并且知道它是一个 IEnumerable<T>然后此函数会将其设置为相应类型的列表:

public void AssignListProperty(Object obj, String propName)
{
var prop = obj.GetType().GetProperty(propName);
var listType = typeof(List<>);
var genericArgs = prop.PropertyType.GetGenericArguments();
var concreteType = listType.MakeGenericType(genericArgs);
var newList = Activator.CreateInstance(concreteType);
prop.SetValue(obj, newList);
}

请注意此方法不进行类型检查或错误处理。我将其作为练习留给用户。

关于c# - 使用反射创建通用 List<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14888075/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com