泛型铸造
本文关键字:泛型 | 更新日期: 2023-09-27 17:50:42
有人能帮我解决这个问题吗?
我有以下类:
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,因为强制转换不工作。
注。上面的代码试图假冒System.Data.Objects.ObjectContext.CreateObjectSet
方法
在您的示例中,FObjectSet似乎没有从ObjectSet继承。它只实现了IObjectSet接口。
如果它确实继承了ObjectSet,在将其转换为ObjectSet之前,您不需要将其转换为IObjectSet,实际上,您根本不需要将其转换为ObjectSet…
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>
代替,但我不知道这是否会做你想要的。