繁体   English   中英

返回变量对象(动态?)

[英]Return a variable object (dynamic?)

我试图找到最好的方法来做到这一点:

我有一个抽象类A,还有许多具体的派生类,我们称它们为D1..DN。 每个派生类都需要一个方法,该方法接受一个字符串,对其进行解析,然后根据其具体类型返回一个类型。 因此,由于我不知道Abstract类的返回类型,因此无法正常定义该函数。 我发现的是dynamic关键字,我可以这样做:

公共动态Parse(); 在我的抽象类中,然后每个具体类都可以覆盖它并返回他们想要的任何类型,但是,在使用此类型的应用程序上,我想知道哪个是返回的类型,所以这一点都不好。

还有其他选择吗? 最糟糕的情况是不会执行多态操作,并且在我的主应用程序上,在一个巨大的问题上询问抽象类是否检查它是什么类并相应地设置返回类型。

编辑:不良的设计,应该重新考虑问题,并找到一种更好的多态方法。 对不起,您的时间:)。 在最坏的情况下,我将使用返回对象,并使用ifs处理数百万行

您正在寻找泛型:

abstract class ParserBase<T> {
    public abstract T Parse(string input);
}

abstract class ThingyParser : ParserBase<Thingy> {
    public override Thingy Parse(string input);
}

如果您想返回任何类型的对象,可以

public abstract object Parse(string s);

那么子类就可以返回他们想要的任何东西...。但是通常这是一个BAD设计。

协方差和反变量概念可能会起作用:

    public abstract BaseClass Parse(string s);

因此,如果您返回从base继承的任何类型,将不会有问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM