使用方法作为C#中的值创建字典

时间:2017-09-30 17:30:17

标签: c# dictionary methods

我需要创建一个字典,其中的键是字符串,值是方法,可以返回一些东西或什么都不是(void),所以它们都不是同一类型。如何在C#中实现?

1 个答案:

答案 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[] { });
    }
}

这段代码可以解决你应该重新设计你的设计的问题。