[英]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.