gpt4 book ai didi

c# - 如何找到两种类型中最小的可分配类型(重复)?

转载 作者:可可西里 更新时间:2023-11-01 08:08:49 25 4
gpt4 key购买 nike

<分区>

这里有两种扩展方法可以使用

public static Type FindInterfaceWith(this Type type1, Type type2) {
// returns most suitable common implemented interface
}

public static Type FindBaseClassWith(this Type type1, Type type2) {
// returns most derivative of common base class
}
  • FindInterfaceWith 如果它们没有共同实现的接口(interface),则返回 null
  • FindBaseClassWith 如果它们没有更多派生公共(public)基类,则返回 System.Object
  • FindBaseClassWith 如果参数之一是接口(interface),则返回 null
  • 如果任何参数为 null,它们都返回 null

最终解决方案中的方法签名如下:

public static Type FindAssignableWith(this Type type1, Type type2) {
// what should be here?
}

Reflection和Linq是限制使用的,除了别无他法。

是否有好的方法可以找到type1type2 之间最适合的通用类型?

或者有什么更好的方法可以实现这一点?


更新:

根据我个人的理解,由于类能够实现多个接口(interface)FindInterfaceWith 可能需要调用 FindBaseClassWith 内部;否则类型的最佳选择将无法确定。

如果这个假设是正确的,那么 FindInterfaceWith 就变成了一个多余的方法;因为 FindInterfaceWithFindAssignableWith 之间的唯一区别是:

FindInterfaceWith 如果有最佳类选择,则返回 null;而 FindAssignableWith 直接返回确切的类。

否则,它们都返回最佳接口(interface)选择。

这是说最初的假设是不合理的。也就是说,如果 FindAssignableWith 不是,则无法实现 FindInterfaceWith

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