ASP.NET Core 2.1-无需反射即可运行属性的代码

时间:2018-07-23 11:53:58

标签: c# asp.net-core

我定义了以下属性:

class MyAttribute: RouteAttribute, IActionModelConvention, IActionHttpMethodProvider
{
    public IEnumerable<string> HttpMethods { get; }

    public MyAttribute(string template) : base(UpdateTemplate(template))
    {
        HttpMethods = new[] { HttpMethod.Post.Method };
    }

    public void Apply(ActionModel action)
    {
        Foo();
    }
}

想法是运行Foo(),而无需使用反射,并手动查找具有提供的属性的方法。

现在,只有在Web应用程序收到第一个请求之后,MVC才会运行Apply(action)。我正在寻找一种解决方案,该解决方案可以使方法在属性上下文中运行,而无需通过反射来找到它并运行Foo()

Foo()不一定必须在属性内。


任何允许我拥有属性实例并在应用程序启动时使用的解决方案都会受到欢迎。


编辑:为澄清起见,我要尝试实现的是使用MVC的内部机制来搜索实现某些接口并运行它们实现的某些功能的类。例如,在使用上述机制时,我使用IActionModelConvention运行Foo()。这里的问题是Foo()仅在触发路由机制后才运行,只有在将请求发送到应用程序之后才会发生。我正在寻找可以在应用程序启动时运行我的代码并拥有属性实例的东西,以便可以将Foo(this.someAttributeField)传递给它

0 个答案:

没有答案