gpt4 book ai didi

c# - 为什么我的反射字典类型没有实现 IDictionary?

转载 作者:太空宇宙 更新时间:2023-11-03 22:04:29 24 4
gpt4 key购买 nike

我正在使用反射和递归进行一些通用对象比较。递归方法在每个步骤中都需要一些类型信息,这些信息由调用者提供。有一次我知道下一个属性是 Dictionary<T,U> ,我想发送正确的类型。我想到了这个:

Type dictionaryType = typeof (IDictionary<,>).MakeGenericType(new [] {keyType.PropertyType, typeof(ValueType)});

在哪里keyTypeValueType是较早发现的类型。但是,此类型未实现 IDictionary<KeyType, ValueType>接口(interface),根据 dictionaryType.GetInterfaces() .为什么?它看起来应该...

最佳答案

因为类型是 IDictionary<KeyType, ValueType> . GetInterfaces方法只 promise 返回 An array of Type objects representing all the interfaces implemented or inherited by the current Type .自 IDictionary<>不(实际上不能)实现自身,返回值合法地是它继承的所有接口(interface)。

使用 Dictionary<,>作为实现 IDictionary<,> 的任意类,以下将更合适:

Type dictionaryType = typeof (Dictionary<,>).MakeGenericType(new [] {keyType.PropertyType, typeof(ValueType)});

关于c# - 为什么我的反射字典类型没有实现 IDictionary?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8941476/

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