[英]Casting generics
有人可以帮我解决这个问题吗?
我有以下课程:
public partial class FObjectSet<T> : IObjectSet<T> where T : class
{
...
}
我也有以下课程:
public partial class FContext : IContext, IDisposable
{
public ObjectSet<T> CreateObjectSet<T>() where T : class
{
var fakeObjectSet = new FObjectSet<T>();
return (fakeObjectSet as IObjectSet<T>) as ObjectSet<T>;
}
}
由于CreateOjectSet
方法返回null。
ps上面的代码试图伪造System.Data.Objects.ObjectContext.CreateObjectSet
方法。
在您的示例中,FObjectSet似乎不从ObjectSet继承。 它只实现了IObjectSet接口。
如果它确实从ObjectSet继承,那么在将它转换为ObjectSet之前你不需要将它强制转换为IObjectSet,事实上,你根本不需要将它转换为...
public partial class FObjectSet<T> : ObjectSet<T> where T : class
{
...
}
public partial class FContext : IContext, IDisposable
{
public ObjectSet<T> CreateObjectSet<T>() where T : class
{
var fakeObjectSet = new FObjectSet<T>();
return fakeObjectSet;
}
}
这不起作用,因为FObjectSet<T>
不扩展ObjectSet<T>
。 您可以返回IObjectSet<T>
,但我不知道是否可以执行您想要的操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.