1
4
如果这些类有公共操作,听起来它们应该继承自同一个基类或实现同一个接口,对吗?如果是,则使用该接口/基作为T的约束
然后您将拥有对接口或基类提供的共享成员的编译时访问权。 |
2
0
你可以采取行动
然后使用Action委托(在本例中通过lambda),当调用activate时将知道属性:
|
3
0
最好的解决方案是给对象一个公共的基类型,并将类型参数T约束为该类型。然后,您可以在编译时访问公共基类型的方法或属性:
或
如果这是不可能的,那么如果没有公共基类型,您所能做的就是反射要查找和调用您感兴趣的属性的对象:
我要补充的是,反射比较昂贵,而且您也会丢失编译时验证。但在这种情况下很方便。 您可以通过调用以下命令获取用于处理方法的MethodInfo对象:
|
Glory Raj · 有什么方法可以使这两个块具有共同的功能吗 2 年前 |
milczi · Swift通用无强制展开向下投射 6 年前 |
bugs · Typescript-泛型类型扩展自身 6 年前 |
John Bustos · C#通用工厂模式,不说明通用工厂模式的类型 6 年前 |
Blankdud · 具有默认数据的通用对象创建方法 6 年前 |
Tim Hutchison · 从泛型对象列表中读取泛型值 6 年前 |