gpt4 book ai didi

c# - 创建一个返回实现通用接口(interface)的对象的方法

转载 作者:行者123 更新时间:2023-11-30 13:36:55 25 4
gpt4 key购买 nike

我有一个方法应该返回一个实现通用接口(interface)的对象。它接受一个参数,该参数确定要实例化哪个类并返回实例化的对象。

    public class PlayerRetriever
{
public static IPlayer<T> Retrieve(string SitePath)
{
if (SitePath == "Home") { return new Player1(); }
else { return new AnotherPlayer(); }
}
}
interface IPlayer<T>
{
void RunPlayer();
List<T> RetrievePlayersByMovie(string movie);
}

“Player1”和“AnotherPlayer”都实现了 IPlayer。

为什么我的方法在我的方法类型中的“T”下出现“找不到类型或命名空间‘T’”错误?

编写返回类型为实现通用接口(interface)的对象的方法的正确方法是什么?

最佳答案

首先,您的 Retrieve方法需要像这样通用 Retrieve<T> .那么问题就变成了,调用的时候需要指定T的类型.如果你的Player1和你的 AnotherPlayer不要实现相同的 IPlayer<T> (意味着 T 不同),那么您将指定什么作为泛型的类型?

你可以做的是,创建一个 IPlayer将所有非通用内容移入的非通用接口(interface),然后是 IPlayer<T>继承自那个,添加通用属性/方法。然后您的方法可以返回非通用的 IPlayer .

关于c# - 创建一个返回实现通用接口(interface)的对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28224184/

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