gpt4 book ai didi

c# - 如何使用更通用的 IEnumerable

转载 作者:太空狗 更新时间:2023-10-30 00:54:42 27 4
gpt4 key购买 nike

我有如下代码:

PropertyInfo p_info_keys = obj.GetType().GetProperty("Keys");
IEnumerable<string> keys = (IEnumerable<string>)p_info_keys.GetValue(obj, null);

foreach (string key in keys)
{
// Some code
}

问题是这一行:

IEnumerable<string> keys = (IEnumerable<string>)p_info_keys.GetValue(obj, null);

因为它可以:

IEnumerable<decimal> keys = (IEnumerable<decimal>)p_info_keys.GetValue(obj, null);

我试过用这个:

IEnumerable<object> keys = (IEnumerable<object>)p_info_keys.GetValue(obj, null);

但是,当然,它不起作用。

那么,我怎样才能使用更通用的结构来接受字符串和小数呢?

提前谢谢你。

最佳答案

最简单的方法是使用 IEnumerable<T>延伸IEnumerable :

IEnumerable keys = (IEnumerable) p_info_keys.GetValue(obj, null);

foreach (object key in keys)
{
...
}

当然,您在编译时并没有 key 的类型,但如果您尝试对这两种情况使用相同的非通用代码,那无论如何都是不可能的。

另一种方法是使用通用方法执行此操作:

public void Foo<T>(...)
{
IEnumerable<T> keys = (IEnumerable<T>) p_info_keys.GetValue(obj, null);

foreach (T key in keys)
{
...
}
}

关于c# - 如何使用更通用的 IEnumerable<T>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11981496/

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