【发布时间】:2021-04-29 05:44:40
【问题描述】:
是否可以有一个接口与一个可以返回多种类型的方法?
我知道有动态类型,或者有
public T MyMethod<T>() { }
但是实现这个接口的类仍然会抱怨不兼容的类型。我不能在实现接口的类中使用动态类型,因为我希望调用者知道它将收到什么样的结果。
public interface Command {
T Execute<T> ();
}}
public class GetMaxFallSpeedCommand : Command {
public float Execute() {
return 1f;
}
}
返回“没有实现接口……”
具体用法:
void Main() {
var myClass = new MyClass();
myClass.ExecuteCommand(new MyCommandThatJustDoesSomething());
float someValue = myClass.ExecuteCommand(new MyCommandThatReturnsAFloat());
}
【问题讨论】:
-
“但是实现这个接口的类仍然会抱怨不兼容的类型”是什么意思,你能举个例子吗?你究竟是如何在某个类中实现这个接口的
-
实现类在不同情况下是否可能返回不同的类型,或者给定的实现是否总是返回相同的类型。如果是第二个,那么通用接口将是一个不错的选择,您可以使用它返回的类型来定义您的实现类。
-
对不起,我更新了。不,每个实现接口的类都会返回给定的类型。
-
您没有说明如何使用它,所以您得到的答案很幸运,它仍然可能导致“下一个问题”。如何处理实现
ICommand<ClassYouDidntKnowExisted>的对象?以及在返回时如何使用ClassYouDidntKnowExisted的实例? -
对我来说似乎很清楚。我只是为一个类设置了一种方法,可以将消息传递给另一个类,除了它可以预期的响应类型(或不知道)之外,不知道该类的任何信息。
标签: c#