c# - 类/构造函数到 Action?
问题描述
我有两个类,它们都继承自 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);
你是怎么做到的?
感谢您的帮助<3
解决方案
看来,您需要一个带有两个参数的Func
委托
Func<Stream, CompressionMode, Stream> classPattern = (stream, mode) => condition ? (Stream)new FirstClass(stream, mode) : new SecondClass(stream, mode);
并使用它
var newObject = classPattern(stream, compressionMode);
您也可以将其转换为本地函数
Stream ClassPattern(Stream stream, CompressionMode mode) =>
condition ? (Stream) new FirstClass(stream, mode) : new SecondClass(stream, mode);
推荐阅读
- python - Tensorflow 2.3 ImportError:DLL加载失败
- python - 从 API 获取内容
- qt - 如何使用从 UDP 套接字接收的 Gstreamer 在 Qt 应用程序中显示流视频帧
- javascript - Yarn 似乎没有下载一个包的所有文件
- html - 为什么使用百分比时标题的高度没有增长?
- android - 如何正确设计带有操作的列表项
- android - Kotlin如何将数据类从何时返回到列表中
- c# - 为什么在单击按钮时会触发 Page_Load?
- python - 如何使用 Ctypes 将此 numpy 数组传递给 C?
- powerbi - DAX 能否计算跨多个列的运行 P90?