【发布时间】:2019-07-01 15:51:03
【问题描述】:
每次我使用IsAssignableFrom 来查看一个类型是实现接口还是继承自基类型时,我都会忘记哪个参数放在哪里。 documentation 很长。我总是最终写一个单元测试。
鉴于这些类型:
public interface IVehicle {}
public class VehicleBase { }
public class Car : VehicleBase , IVehicle { }
查看Car 的实例是实现接口还是从基类继承的正确方法是什么?
是这样吗:
var implements = typeof(IVehicle).IsAssignableFrom(typeof(Car));
var inherits = typeof(VehicleBase).IsAssignableFrom(typeof(Car));
还是反过来?
var implements = typeof(Car).IsAssignableFrom(typeof(IVehicle));
var inherits = typeof(Car).IsAssignableFrom(typeof(VehicleBase));
我尝试将其解读为“某事可从某事分配”,但这并不能帮助我记住。我将事物分配给 事物。我不会从其他事物分配事物。
【问题讨论】:
-
把函数想象成左侧赋值:{firstarg} 类型的变量可以保存 {secondarg} 的实例
-
如果这应该对某人有所帮助,像
IDoesItImplementThis这样的名字是完全没用的(甚至不能从英语的角度理解)。使用IVehicle、Car和SpecificCar或类似的东西。 -
@thehennyy - 这有帮助。我已将其添加到答案中。
-
奇怪的反应。每次使用它时,我都会问自己同样的问题,并且我必须深入研究问题和答案以找到简洁的东西。我决定将我的问题和答案存储在 SO 上。我碰巧个人知道它有多大帮助。显然其他人不同意。哦,好吧。
-
你怎么能忘记?写在方法名..
标签: c# .net reflection