2011-04-20 138 views
3

有人可以帮我解决这个问题吗?铸造仿制药

我有下面的类:

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。

p.s.上面的代码试图伪造System.Data.Objects.ObjectContext.CreateObjectSet方法。

+2

'FObjectSet '是否继承'ObjectSet '?如果不是,它将不起作用。 – Ryan 2011-04-20 01:37:34

回答

4

在您的示例中,FObjectSet不会从ObjectSet继承。它只实现IObjectSet接口。

如果没有从对象集继承,你就不需要它铸造的对象集之前,将其转换为一个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; 
    } 
} 
1

这不起作用,因为FObjectSet<T>不延伸ObjectSet<T>。您可以改为返回IObjectSet<T>,但我不知道这是否会达到您的要求。