如果控制器实现特定的接口或具有其他属性或类似属性,则我需要能够在通用控制器中提供其他方法。这是我现在所拥有的:
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
应该同时具有Dog
和Cat
的能力,但是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
{
}