Может ли кто-нибудь помочь мне решить эту проблему?
У меня следующий класс:
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
возвращает ноль, поскольку приведение не работает.
P.s. Приведенный выше код пытается подделать метод System.Data.Objects.ObjectContext.CreateObjectSet
.
2 ответа
В вашем примере FObjectSet не наследуется от ObjectSet. Он реализует только интерфейс IObjectSet.
Если бы он унаследовал от 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>
, но я не знаю, поможет ли это вам.
Похожие вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.
FObjectSet<T>
отObjectSet<T>
? В противном случае это не сработает.