我正在制作一种统计软件,该软件首先需要“检测”数组的数据类型。
首先,X [,]是sometype的数组,可以是所有字符串,所有double,所有int或全部的组合。
现在,对于每一列X []我都需要知道数据类型。喜欢:
我在C#中需要这样的东西。
因此,您似乎想要在此处执行的操作是在此处找到类型的“最低公分母”。集合中所有项目“均为”的最派生类型。
我们将从此辅助方法开始,以获取对象的整个类型层次结构(包括自身):
public static IEnumerable<Type> BaseClassHierarchy(object obj)
{
Type current = obj.GetType();
do
{
yield return current;
current = current.BaseType;
} while (current != null);
}
现在,我们可以获取一个对象序列,将每个对象映射到其层次结构,将所有这些序列彼此相交,然后结果的第一项是所有其他对象共有的最派生类型:
public static Type MostDerivedCommonType(IEnumerable<object> objects)
{
return objects.Select(o => BaseClassHierarchy(o))
.Aggregate((a,b)=> a.Intersect(b))
.First();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句