我需要创建一个字典,其中的键是字符串,值是方法,可以返回一些东西或什么都不是(void),所以它们都不是同一类型。如何在C#中实现?
答案 0 :(得分:1)
你的设计似乎有一种强类型语言的缺陷。我知道在javascript中这可能是常见的用法,但不是在C#中。
您不能返回值或空格,您必须以各种方式返回值。
class ResultClass
{
}
class OtherClass
{
}
class MethodHolder
{
private readonly Dictionary<string, Func<object[], object>> Dict;
public MethodHolder()
{
Dict = new Dictionary<string, Func<object[], object>>();
Dict.Add("MethodA", (x) => MethodA(x));
Dict.Add("MethodB", (x) => MethodB(x));
Dict.Add("MethodC", (x) => MethodC(x));
}
public object MethodA(object[] param)
{
//some code
return new ResultClass();
}
public object MethodB(object[] param)
{
//this is your void example
return null;
}
public object MethodC(object[] param)
{
//some more code
return new OtherClass();
}
public void HowToUse()
{
var method = Dict["MethodA"];
method.Invoke(new object[] { });
}
}
这段代码可以解决你应该重新设计你的设计的问题。