【发布时间】:2020-08-24 14:27:21
【问题描述】:
C#中不使用类型实参作为输入参数或返回值的泛型方法有什么用处?
private void method1<T>()
我刚刚在 ASP.NET Core 代码中进行了探索,看到他们在很多地方都使用了这种泛型方法。
例如在 UseMiddlewareExtensions 中的 UseMiddleware。
public static IApplicationBuilder UseMiddleware<TMiddleware>(this IApplicationBuilder app,
params object[] args)
{
return app.UseMiddleware(typeof(TMiddleware), args);
}
这是一种常见的模式还是我错了?
【问题讨论】:
-
我不太清楚你的问题是什么。你能澄清一下吗?你问如何拨打
UseMiddleware?您展示的是IApplicationBuilder接口的扩展方法,因此该方法将显示为实现该接口的任何类型的成员。 -
或者您可能在问“为什么泛型方法可以与非泛型方法同名”?目前尚不清楚您在哪里显示“C# 中的泛型方法而不使用类型参数作为输入参数”的示例...
-
我会说这只是惯用语,它读起来更自然。它还保存了
typeof。 -
这是一个例子:
private void method1<T>()我没有使用 T 作为返回值或像这样的输入参数类型private T method1<T>(T a) -
但它是一种输入参数...具体来说,您是在传入类型本身。当然,你不能以那种形式使用它,因此需要
typeof调用它。