c# - 创建泛型类的实例,如何轻松将类型设置为调用类
问题描述
我有一个通用类LoggerHelper<T>
。应用程序中有许多不同类的属性,其值将设置为LoggerHelper
. 在这些类的构造函数中,将设置此属性。例如:
public class Importer
{
ILogger _logger;
public Importer()
{
this._logger = new LoggerHelper<Importer>();
}
}
如何避免每次都指定类型?有合适的模式吗?
解决方案
您可以使用工厂方法,因此编译器可以推断出类型。
静态方法
public static class LoggerHelperFactory
{
public static LoggerHelper<T> Create<T>(T instance)
{
return new LoggerHelper<T>();
}
}
然后您可以将其称为:
_logger = LoggerHelperFactory.Create(this);
扩展方法
public static class LoggerHelperFactoryExtensions
{
public static LoggerHelper<T> CreateLogger<T>(this T instance)
{
return new LoggerHelper<T>();
}
}
用法:
_logger = this.CreateLogger();
推荐阅读
- activemq-artemis - ActiveMQ Artemis 2.17 Hawtio 过滤器搜索问题
- node.js - 使用连接查询 SQLite 的 Node JS API 端点
- node.js - 如何将缓冲区从 memoryStorage(multer)转换为图像?
- excel - 更快地比较值的速度改进
- r - 如何在 R 中匹配两个不同的大数据框?
- cross-validation - 当某些迭代具有 NaN 值时,在 mlr3 ResampleResult 中聚合性能度量
- python-3.7 - 使用xlwt如何在excel文件中添加图像
- graylog - Graylog:未显示消息
- spartacus-storefront - 从 smartedit 更改后,斯巴达克斯页面 Id 未解决
- php - PHP 会话在内部不工作 do not include()