我认为这个问题可以使用反射进行排序(这是一种我不太确定的技术).
我的代码正在接收一些在运行时序列化为XML的代码对象.当我收到它并将其反序列化时,一个字段让我有些麻烦.
有一个字段可以包含以下数据类的组合(为简洁起见,已简化):
class KeyValuePairType
{
public string Key;
public string Value;
}
class KeyValueListPair
{
public string Key;
public string[] Value;
}
Run Code Online (Sandbox Code Playgroud)
我将这些作为对象[]接收到我的代码中,并且我需要在运行时确定它包含的内容,以便我可以在需要KeyValuePairType []和KeyValueListPair []作为参数的本地对象上调用接口,例如
public DoSomeWork(KeyValuePairType[] data1, KeyValueListPair[] data2)
Run Code Online (Sandbox Code Playgroud)
我有以下案例来应对:
object []包含:
在什么情况下我调用DoSomeWork(null,null);
一个KeyValuePairType数组,在这种情况下我调用DoSomeWork(KeyValuePairType [],null);
一个KeyValueListPair数组,在这种情况下我调用DoSomework(null,KeyValueListPair []);
或者每个的数组,在这种情况下我调用DoSomework(KeyValuePairType [],KeyValueListPair []);
欢迎任何想法.
谢谢
事实证明,对象数组包含随机的离散对象序列.最初,我被引导相信它可能是一系列离散和这些对象的数组.
因为它是LINQ语句将涵盖所有可能性.
我能否对那些回答的人表示非常感谢.我已经为那些回答LINQ语句的人发布了+1.
假设你有LINQ可供你使用......
public void Foo(object[] values)
{
var pairs = values.OfType<KeyValuePairType>().ToArray();
var lists = values.OfType<KeyValueListPair>().ToArray();
pairs = pairs.Length == 0 ? null : pairs;
lists = lists.Length == 0 ? null : lists;
DoSomeWork(pairs, lists);
}
Run Code Online (Sandbox Code Playgroud)