最近工作使用webapi ,由于一般增删改查多,为了不重复复制粘贴,直接将重复的代码都抽象,变成泛型父类。子controller直接继承,即可使用。
但在逻辑需要有些变化时,进行重写父类方法。作为一个使用webapi加继承的新手,遇到了“找到了与该请求匹配的多个操作”的错误提示。开始我是取消重写和更改路由匹配,现在想来,直接更改路由匹配即可。目前我是选择了另外一条路。路由匹配,其实靠的是反射读取特性,获得我们标记的路径。反射牛逼之处在于,类的信息全都能看见,因此,被重写的方法的特性都能查到。而子类重新方法后,我再标记路径特性,因此对于webapi来说是找到两个匹配的特性。父类的方法上的特性我是不能移除的,因为其他普通子类在使用。所以我移除子类重写方法上的特性,虽然webapi查询到父类的路径匹配,但执行invoke方法名时,是需要按照继承的规矩来执行,因此实际执行子类重写的方法。
知识不运用就没有实际掌握,不断学习与运用才能成长,千万别学我没知识又不去学,遇到问题就懵逼,开发效率低下。