首页 > 解决方案 > 创建泛型类的实例,如何轻松将类型设置为调用类

问题描述

我有一个通用类LoggerHelper<T>。应用程序中有许多不同类的属性,其值将设置为LoggerHelper. 在这些类的构造函数中,将设置此属性。例如:

public class Importer
{
    ILogger _logger;

    public Importer()
    {  
        this._logger = new LoggerHelper<Importer>();
    }
}

如何避免每次都指定类型?有合适的模式吗?

标签: c#genericsconstructor

解决方案


您可以使用工厂方法,因此编译器可以推断出类型。


静态方法

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();

推荐阅读