【发布时间】:2020-07-17 12:23:37
【问题描述】:
我有两个类,它们都继承自 Stream 类。
FirstClass : Stream
{
FirstClass(Stream, CompressionMode)
{
..
}
}
SecondClass : Stream
{
SecondClass(Stream, CompressionMode)
{
..
}
}
我想将这些类中的一个放到一个变量中(我猜是动作),然后从该变量中创建一个新对象——就像这样:
Action<Stream, CompressionMode> classPattern = condition ? FirstClass : SecondClass
///And now this
var newObject = classPattern(Stream, CompressionMode);
///Or maybe even this
classPattern newObject = classPattern(Stream, CompressionMode);
你是怎么做到的?
感谢您的帮助
【问题讨论】:
-
Action是void返回类型。您可能需要Func,其中最后一个泛型参数是返回类型。 -
我建议实现一个 factory 类,比如
public static class MyClassBuilder {public static Stream CreateMyClass(Stream parent, CompressionMode mode) {...}}
标签: c# class generics constructor delegates