C#-将所有方法参数传递给另一个方法?

WRo*_*onX 5 c# oop

我有一个类,它具有三个重载方法。假设有:

class MyChildClass
{
    public void myMethod(int i)
        { /* do something with i */ }
    public void myMethod(int a, string b)
        { /* get i from a and b and call: */ myMethod(i); }
    public void myMethod(string c, string d)
        { /* get i from c and d and call: */ myMethod(i); }
}
Run Code Online (Sandbox Code Playgroud)

现在,我希望该类成为其他(父)类中的私有字段,但我需要这三种方法可以访问。现在,我只是做了:

class MyBaseClass
{
    private MyChildClass myObject = new myChildClass(); // or similar
    public void myMethod(int i) 
        { myObject.myMethod(i);    }
    public void myMethod(int a, string b) 
        { myObject.myMethod(a, b); }
    public void myMethod(string c, string s) 
        { myObject.myMethod(c, d); }
}
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以将其作为一种简短的方法来实现?看起来像这样的东西:

public void myMethod(unknownListOfArgumentsOfDifferentTypes args)
    { myObject.myMethod(args); }
Run Code Online (Sandbox Code Playgroud)

我尝试使用,public void myMethod(params object[] something)但是没有用。是否有可能,还是我必须将每种方法“投影”到另一个方法中?

编辑:子类具有各种方法和字段,我只希望可用于父类访问。这就是为什么我不希望父母在此之后派生。我没有解释,很抱歉,如果子类只包含这三个方法。这些是我希望可以作为父类的公共方法访问的方法。

soh*_*hil 1

您可以使用public void myMethod(params object[] something)如下所示:

public static void Main()
{
    UnknownArgumentsMethod1(1, 2, 3, "foo");
}

public static void UnknownArgumentsMethod1(params object[] list)
{
    UnknownArgumentsMethod2(list);
}

public static void UnknownArgumentsMethod2(params object[] list)
{
    foreach (object o in list)
    {
        if (o.GetType() == typeof(int))
        {
            Console.WriteLine("This is an integer: " + (int)o);
        }
        else if (o.GetType() == typeof(string))
        {
            Console.WriteLine("This is a string: " + (string)o);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)