如何返回与方法返回类型不同的对象



我不明白为什么我们可以传递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);
}
}

最新更新