C# 为什么';ViewComponent类是否有调用方法的抽象定义?
我想知道为什么微软没有在C# 为什么';ViewComponent类是否有调用方法的抽象定义?,c#,asp.net-core,.net-core,C#,Asp.net Core,.net Core,我想知道为什么微软没有在ViewComponent抽象类中定义一个抽象方法Invoke或InvokeAsync,而Invoke方法对于视图组件的工作至关重要 有什么原因吗?这只是设计决策。调用视图组件时,您可以传递任意数量的参数和任意类型的参数。所有这些参数都将传递给InvokeAsync方法。要避免将它们打包到类似于object[]array的东西中,可以使用任意数量的强类型参数定义InvokeAsync方法: public async Task InvokeAsync(int arg1, s
ViewComponent
抽象类中定义一个抽象方法Invoke
或InvokeAsync
,而Invoke
方法对于视图组件的工作至关重要
有什么原因吗?这只是设计决策。调用视图组件时,您可以传递任意数量的参数和任意类型的参数。所有这些参数都将传递给
InvokeAsync
方法。要避免将它们打包到类似于object[]
array的东西中,可以使用任意数量的强类型参数定义InvokeAsync
方法:
public async Task InvokeAsync(int arg1, string arg2) {
// ...
}
在调用过程中,将通过反射检查ViewComponent的方法,并将为此调用选择一个具有正确签名的方法。因此(InvokeAsync
)的任意参数-无法将此方法声明为抽象(或虚拟)
您也可以在其他地方看到相同的设计,例如,Startup
类可以具有名为Configure
的方法,该方法接受任意数量的参数,这些参数将从DI容器中解析,但Startup类不会覆盖父类中的任何方法(实际上,在本例中根本没有父类)