c# -数组内类的多态性



我试图利用多态性的类实例内的对象数组:

ClassA a = new ClassA();
ClassB b = new ClassB();
Object[] classes = new Object[] { a, b };

其中一个类的例子是:

public class ClassA 
{
    public string PrintOutput()
    {
        return "254,62,455,5,15,62,656";
    }
}

我尝试过类似的东西:c#类多态性

这个人的问题是,他们创建了一个类型为A(类之一)的数组。将数组类型更改为Object会导致错误:Object不包含该方法的定义/无法找到接受Object类型第一个参数的可访问扩展方法。

编辑:目前,我只是想打印每个类中方法的输出:

foreach (Object obj in classes)
{
    Console.WriteLine(obj.PrintOutput());
}

obj.PrintOutput()是我得到上述错误的地方。

一种方法是使用公共接口

public interface IPrintOutput
{
    string PrintOutput();
}
public class ClassA : IPrintOutput
{
    public string PrintOutput()
    {
         return "254,62,455,5,15,62,656";
    }
}
public class ClassB : IPrintOutput
{
    public string PrintOutput()
    {
         return "something else";
    }
}
IPrintOutput[] classes = new IPrintOutput[] { a, b };

重写ToString并使用它的第二种方法(每个对象都有ToString)

公共接口是最好的解决方案。另一个解决方案是将类定义为动态的:

 dynamic[] classes = new Object[] { a, b };

最新更新