Rya*_*son 7 c# generics type-constraints
我想我知道答案,但是我需要指定泛型方法可以基于两个可选约束来获取类型.那就是T可以是一种类型或另一种类型.
public WebPage Click<T>(Func<WebPage> predicate) where T : LinkBase || FieldBase, new()
{
WebDriver.FindElement(new T().LinkPath).Click();
WebDriver.Wait();
return predicate.Invoke();
}
Run Code Online (Sandbox Code Playgroud)
我知道目前没有这样的语法,但有没有办法解决这个问题而不重复约束两种类型的方法?如果没有,这是否可能用于该语言的未来版本?
如果LinkBase并且FieldBase没有共同基础或实现公共接口,那么这样做是没有意义的.如果他们这样做,那么你可以简单地使用那个作为约束.
我说它没有意义,因为使用类型约束的原因是确保使用的实际泛型类型参数支持已知的公共接口(否则,您可能只是将整个事物设置为非泛型和使用object).但是如果你有一个假设的"或"约束,那么编译器如何能够确保你在泛型中编写的代码对于最终被指定的类型参数实际上是有意义的?
你是对的,没有办法将多种类型传递到泛型方法中。
你能控制这两种类型吗?你能让它们都实现相同的接口或抽象类吗?
| 归档时间: |
|
| 查看次数: |
3731 次 |
| 最近记录: |