在处理仿制药时,我们可以做where T: TypeA, TypeB
,这意味着T必须同时实施TypeA和TypeB。但是在这个表达式中可以使用OR吗?例如where T: TypeA || TypeB
?无论如何要做到这一点?仿制药:其中T是TypeA或TypeB
3
A
回答
8
这是不可能的,它不会有意义。你永远不能依靠T
有某些成员可用,因为它可能是A 或 B.所有成员都是可选的。
当然可以想象拥有这个功能,但它违背了泛型的精神。这只会在反思的情况下有用。
7
实现此目的的唯一方法是使TypeA
和TypeB
继承或实现相同的父类或接口。例如:
public interface IParent
{
}
public class TypeA : IParent
{
//snip
}
public class TypeB : IParent
{
//snip
}
然后你可以使用
public class Blah<T> where T: IParent
{
}
相关问题
- 1. if typeA in typeBlist中的typeB in typeB:...在if子句中访问typeB?
- 2. Sprite Kit失败断言:(typeA == b2_dynamicBody || typeB == b2_dynamicBody)
- 3. 仿制药本身仿制药
- 4. 与仿制药
- 5. 从仿制药
- 6. 仿制药
- 7. 堆叠仿制药
- 8. 如何仿制药
- 9. 铸造仿制药
- 10. 仿制药混淆
- 11. 仿制药问题
- 12. 如何仿制药
- 13. 覆盖仿制药
- 14. 的IntelliJ,仿制药
- 15. 铸造仿制药
- 16. 仿制药和Xstream
- 17. 转向仿制药。
- 18. 混淆仿制药
- 19. 铸造儿童与其他仿制药
- 20. 如何强制仿制药
- 21. 通用构造函数(类<T> clazz所)不支持其中T是另一种仿制药
- 22. 这是否适用于仿制药?
- 23. .Net是否支持curried仿制药?
- 24. 仿制药使用,其中限制基类
- 25. 可比性和仿制药
- 26. 仿制药的方法,C#
- 27. 仿制药和铸造
- 28. Ninject和绑定仿制药
- 29. 与仿制药的铸造
- 30. 仿制药和类型
你可以做'TypeA'和'TypeB'为业/实现一个父类/接口? – DavidG
@DavidG:没有例如'Where T:Label OR TextBlock',并且由于某种原因没有使用Control类。 – Arrrr
可能值得一提的是'Label'和'TextBlock'继承自[FrameworkElement](https://msdn.microsoft.com/en-us/library/system.windows.frameworkelement(v = vs.110).aspx)所以你可以使用它。 – DavidG