Это продолжение проблемы, с которой я все еще сталкиваюсь здесь . Я пытаюсь помешать провайдеру отражения OData
предоставить ВСЕ сборки классов CLR в моей сборке.
Рассмотрим следующий класс CLR:
public class Foo
{
public Guid FooID { get; set; }
public string FooName { get; set; }
}
И следующий класс для представления Foo
в виде IQueryable
коллекции:
public class MyEntities
{
public IQueryable<Foo> Foos
{
get
{
return DataManager.GetFoos().AsQueryable<Foo>();
}
}
}
И следующий DataService
класс:
public class MyDataService : DataService<MyEntities>
{
public static void InitializeService(DataServiceConfiguration config)
{
config.SetEntitySetAccessRule("Foos", EntitySetRights.All);
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
}
}
Это все работает, кряква, Дори, и DataService
может отображать коллекцию Foo
. Но если изменить Foo
, чтобы расширить очень простой базовый объект, такой как:
public class Foo : MyObjectBase
{
public Guid FooID { get; set; }
public string FooName { get; set; }
}
Затем (даже при том, что я только пытаюсь представить 1 коллекцию), поставщик отражений захватывает ВСЕ объекты, которые расширяют MyObjectBase
, вызывая множество ошибок.
Базовый класс - это простой абстрактный класс, который реализует ряд интерфейсов и предоставляет другое свойство, такое как:
public abstract class MyObjectBase: IDataObject, IDataErrorInfo, INotifyPropertyChanged, IDisposable
{
public virtual Guid ID { get; set; }
}
Даже добавление IgnoreProperties
в общедоступные свойства здесь не помогает. Есть ли способ узнать, что делает поставщик отражений?