[英]C# - Serialize all attributes of derived class in a list of base class
[英]c# List of derived class
我正在开发用于工作的C#WinForm应用程序,但是我遇到了麻烦,我不知道哪一种是继续进行的最佳方法。 这是一段代码
class Block()
{
// generic Block properties
}
class ABlock() : Block
{
// specific ABlock stuff
}
class BBlock() : Block
{
// specific BBlock stuff
}
abstract class Algorithm()
{
// generic Algorithm properties
abstract List<Block> BlockList // ??
}
class AAlgorithm() : Algorithm
{
// specific AAlgorithm stuff
List<ABlock> BlockList // ??
}
class BAlgorithm() : Algorithm
{
// specific BAlgorithm stuff
List<ABlock> BlockList // ??
}
我认为情况非常简单: Algorithm
每个派生类都有它自己的Block
派生类,但是我想使它通用,并且可以从asbtract class Algorithm
List<Block> BlockList
asbtract class Algorithm
中进行asbtract class Algorithm
。 我认为这是常见的情况,我敢肯定有解决方案。
提前致谢
我可能会丢失一些东西,但是您不能将其设为抽象属性吗?
abstract class Algorithm()
{
abstract List<Block> BlockList { get; }
}
...那么,当编写一个从Algorithm派生的类时,除非实现BlockList.get,否则它将不会编译:
public class AlgorithmA : Algorithm
{
public override List<Block> Blocks
{
get
{
return new List<Block> { new ABlock(), new ABlock() };
}
}
}
唯一的瑕疵是,如果AlgorithmA中的代码想要使用Blocks属性,则可能需要将其强制转换为(ABlock)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.