Die*_*kes 1 c# generics constraints
我有一个带有下面约束的泛型方法:
private string GetResult<T>(T myObject) where T : IDoSomething<T>
{
......
}
Run Code Online (Sandbox Code Playgroud)
现在,问题在于它IDoSomething是由类实现的,而不是由类接口实现的,而且对象总是使用接口作为其类型而不是像以下类来创建:
IClassA myObject = new ClassA();
Run Code Online (Sandbox Code Playgroud)
因此,每当调用泛型方法时,必须进行强制转换myObject以将其转发为参数.
有没有办法避免演员表并使代码工作?(除了继承的选择IDoSomething中IClassA)
不,我不认为你可以避免演员表,因为界面IClassA与之无关IDoSomething.
实际上,某个实现一个接口的类也碰巧实现了另一个接口,这并不能使这两个接口兼容.
即使将IClassA对象赋值回ClassA变量也需要显式强制转换.
| 归档时间: |
|
| 查看次数: |
155 次 |
| 最近记录: |