WebAPI控制器。如何添加动态方法?

时间:2019-06-05 22:10:59

标签: c# .net asp.net-web-api multiple-inheritance

如果控制器实现特定的接口或具有其他属性或类似属性,则我需要能够在通用控制器中提供其他方法。这是我现在所拥有的:

public abstract class AnimalController
{
    [HttpPost]
    public void Walk() { }
}

public class DogController : AnimalController
{
    [HttpPost]
    public void Bark() { }
}

public class CatController : AnimalController
{
    [HttpPost]
    public void Mew() { }
}

public class MutantController : DogController
{
    [HttpPost]
    public void Mew() { }
}

Mutant应该同时具有DogCat的能力,但是C#不允许这样做

public class MutantController : DogController, CatController
{
}

我想知道在WebAPI上下文中解决此问题的最佳方法是什么?本质上,我需要根据某些功能添加其他Web方法。一种解决方案是执行以下操作:

public abstract class AnimalController
{
    [HttpPost]
    public void Walk() { }
}

public class DogController : AnimalController, ICanBark
{
    [HttpPost]
    public void Bark() { }
}

public class CatController : AnimalController, ICanMew
{
    [HttpPost]
    public void Mew() { }
}

public class MutantController : AnimalController, ICanMew, ICanBark
{
    [HttpPost]
    public void Bark() { }

    [HttpPost]
    public void Mew() { }
}

这将导致大量其他代码。我在想,也许SOMEHOW动态添加方法,所以当我在主属性上放置属性时,WebAPI知道使用其他控制器吗?还是通过属性上的方法进行处理?

[CanMew]
[CanBark]
public class MutantController : AnimalController
{
}

0 个答案:

没有答案