Я надеюсь, что кто-то может помочь мне с этой проблемой, которая возникла у меня с XmlSerializer.
Я уже просматривал эту тему: http://social.msdn.microsoft.com/Forums/en-US/asmxandxml/thread/551cee76-fd80-48f8-ac6b-5c22c234fecf/
Я получаю ошибку:
System.InvalidOperationException: Невозможно создать временный класс (результат = 1).
Ошибка CS0012: тип «System.Data.Objects.DataClasses.EntityObject» определен в сборке, на которую нет ссылок. Необходимо добавить ссылку на сборку 'System.Data.Entity, версия = 3.5.0.0, культура = нейтральная, PublicKeyToken = b77a5c561934e089'.
Я убедился, что в моем модульном тесте есть ссылка на System.Data.Entity, поэтому он может компилироваться по крайней мере. Я также в app.config сделал привязку сборки к System.Data.Entity.
Вот моя грубая структура класса
[Serializable]
[XmlRoot(Namespace = XmlSupport.MyNamespace, ElementName = XmlSupport.WantToSerialize)]
[XmlInclude(typeof(WantToSerializeBaseClass)]
[XmlInclude(typeof(EntityObject)]
[XmlInclude(typeof(MyEntityObjectSubClass)]
public class WantToSerialize : WantToSerializeBaseClass, IXmlSerializable (I've tried putting this on the baseclass and the current class)
{
// methods and classes
// I've included XmlIncludes for all the classes that this class has a reference too
// even though in the WriteXml it just uses .NET base classes
}
WantToSerializeBaseClass использует некоторые обобщения, но я украсил его XmlInclude для (EntityObject и любых других классов, на которые он ссылается).
телефонный код:
var serializerWrite = new XmlSerializer(typeof (WantToSerialize), XmlSupport.ITNNamespace);
1020 * не может *
Однако, если я это сделаю:
var serializerWrite = new XmlSerializer(typeof (WantToSerialize), new Type[] {typeof(EntityObject)});
это успешно.
Любые мысли были бы наиболее полезны.
ОБНОВЛЕНО
Я отследил проблему до метода в WantToSerializeBaseClass
public abstract void ConvertFromEntity<TtoCopy>(TtoCopy toCopy) where TtoCopy : MyEntityObjectSubClass;
Где MyEntityObjectSubClass является подклассом EntityObject, который добавляет несколько методов, которые мне нужны для моих объектов-сущностей. MyEntityObjectSubClass выглядит следующим образом:
[Serializable]
[XmlInclude(typeof(EntityObject))]
public abstract class MyEntityObjectSubClass : EntityObject, IMyEntityObjectSubClass
Опять любые мысли были бы велики