gpt4 book ai didi

c# 对静态函数的泛型方法调用

转载 作者:太空宇宙 更新时间:2023-11-03 22:17:32 24 4
gpt4 key购买 nike

我在一个类中有一个泛型方法如下

    private static Dictionary<Type, Feed> _singletons = new Dictionary<Type, Feed>();

public static Feed GetFeed<T>() where T:Feed
{
lock(_padlock)
{
if (!_singletons.ContainsKey(typeof(T))
{
_singletons[typeof(T)] = typeof(T).GetInstance();
}
return _singletons[typeof(T)];
}
}

这里,Feed 是一个接口(interface),Type 是实现Feed 接口(interface)的类的类型。 GetInstance() 是这些类中的静态方法。 typeof(T).GetInstance(); 有问题吗?它说 System.Type 不包含 GetInstance() 的定义。

最佳答案

你可以像这样使用反射来调用静态方法:

private static Dictionary<Type, Feed> _singletons = new Dictionary<Type, Feed>();

public static Feed GetFeed<T>() where T:Feed
{
lock(_padlock)
{
if (!_singletons.ContainsKey(typeof(T))
{
return typeof(T).GetMethod("GetInstance", System.Reflection.BindingFlags.Static).Invoke(null,null);

}
return _singletons[typeof(T)];
}
}

关于c# 对静态函数的泛型方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4506396/

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