谁能帮我解释一下这里发生了什么?
private val map1 = mutableMapOf<String, Data<State<*>>>()
private val map2 = mutableMapOf<String, Data<*>>()
init {
map1.put("1", Data<State<String>>()) //it does not work
map2.put("2", Data<State<String>>()) //it works
map2.put("3", Data<State<Int>>()) //it works
}
class Data<T>
class State<T>
Run Code Online (Sandbox Code Playgroud)
我从 Kotlin 文档中读到,如果类型未知,您可以使用星形投影(*),然后再使用任何类型。那么为什么它不适用于第一种情况呢?它说Type Mismatch Error。
这是我的代码。我无法返回Task<OkObjectResult>。我不想将返回类型转换为更具体的类型,例如Task<OkObjectResult>它会阻止我返回其他类型的结果,例如Task<BadRequestObjectResult>我无法更改方法的签名。这是 MediatR 的IRequestHandler
我该怎么做才能让它发挥作用?
public class Handler : IRequestHandler<Request, ActionResult>
{
public Task<ActionResult> Handle(Request request, CancellationToken cancellationToken)
{
Task.FromResult(new OkObjectResult(new Response { IsHealthy = true }));
}
}
Run Code Online (Sandbox Code Playgroud)