gpt4 book ai didi

c# - 如何返回T型?

转载 作者:行者123 更新时间:2023-11-30 16:02:00 24 4
gpt4 key购买 nike

我有通用方法:

private ILogger _logger; //get logger something else.
public T GetService<T>(ServiceType type)
{
//how to return _logger?
}

我怎样才能退回T?例如,我有 ILogger:

var logger=GetService<ILogger>(log);

如何实现GetService方法?谢谢!

附言是的,我尝试从 GetService 方法中获取一种或多种类型。比如:Logger,其他一些基础设施类。我知道,ServiceLocator 不是正确的选择(它在许多地方使用),但以我的方式(GetService 将在一个地方使用:为我的插件获取基础设施)我希望它是正常的。

最佳答案

听起来您正在尝试创建某种基于类型的工厂方法。也许这会有所帮助:

public class Factory
{
private ILogger _logger; //get logger something else.

public Factory()
{
_factories = new Dictionary<Type, Func<Type, object>>()
{
{ typeof(ILogger), t => _logger },
};
}

private Dictionary<Type, Func<Type, object>> _factories;

public T GetService<T>()
{
var t = typeof(T);
return (T)_factories[t].Invoke(t);
}
}

关于c# - 如何返回T型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38093470/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com