我不明白为什么我们可以传递Customer
,而返回类型是ActionResult<Customer>
。如何返回与方法返回类型不同的对象?
然而,我理解Task<T>
用于异步方法,因为c#语言在内部提供了这样的特性。
[HttpGet("{id}")]
public ActionResult<Customer> Get(string id)
{
Customer cust = db.Customers.Find(id);
if (cust == null)
{
return NotFound();
}
return cust;
}
你能给我一个简单的例子吗?如何创建我们自己的Wrapper<T>
,让我们可以写如下内容?
public Wrapper<Foo> AnyMethod()
{
return new Foo();
}
如果您查看ActionResult的源代码,您可以看到它是如何在内部定义隐式转换以允许它包装某些类型T或ActionResult类型的。在类似的行上,我们可以定义一个最小的Wrapper类,如下所示:
public class Wrapper<T>
{
private T _t;
public Wrapper(T t)
{
_t = t;
}
public static implicit operator Wrapper<T>(T t)
{
return new Wrapper<T>(t);
}
}