IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Serialisation XML erreur Reflexion


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Lelio1407
    Inscrit en
    Juillet 2009
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 126
    Par défaut Serialisation XML erreur Reflexion
    Bonjour,

    Je voudrais sérialiser une classe "DBE_ProjectBase" mais j'obtiens l'erreur suivante
    "Une erreur s'est produite lors de la réflexion du type 'DBE_ProjectBase'.
    Voici la classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    public class DBE_ProjectBase
    {
            private String _dBE_Project_Name; 
            private Collection<DBE_ScreenBase> _dBE_Project_ScreensCollection;
     
             public DBE_ProjectBase()
            {
                _dBE_Project_Name = "";
               _dBE_Project_ScreensCollection = new Collection<DBE_ScreenBase>();
            }
     
            public String DBE_Project_Name { get; set; }
            public Collection<DBE_ScreenBase> DBE_Project_ScreensCollection { get; set; }
     
    }
    et la fonction de sérialisation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public void DBE_WriteProjectXAML(DBE_ProjectBase projectBase)
    {
         XmlSerializer xs = new XmlSerializer(typeof(DBE_ProjectBase));
         using (StreamWriter wr = new StreamWriter("project.xml"))
         {
             xs.Serialize(wr, projectBase);
          }
    }
    L'exeption se produit au moment du "new XmlSerializer(typeof(DBE_ProjectBase))";

    NB : la classe "DBE_ScreenBase" (champ et propriété Collection<DBE_ScreenBase>) est une classe public, non "static", qui contient un constructeur vide.

    Quelqu'un peut-il m'expliquer d'où vient le problème?

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par Lelio1407 Voir le message
    NB : la classe "DBE_ScreenBase" (champ et propriété Collection<DBE_ScreenBase>) est une classe public, non "static", qui contient un constructeur vide.
    Et à part ce constructeur, elle contient quoi d'autre cette classe ?

    Par ailleurs, comme on a pas de boule de cristal, il faudrait plus de détail sur l'exception; entre autres :

    - type de l'exeption.
    - message
    - InnerException (type et message aussi, et si elle même a une InnerException, la même chose).

  3. #3
    Membre confirmé Avatar de Lelio1407
    Inscrit en
    Juillet 2009
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 126
    Par défaut
    Le message exact est :
    L'exception InvalidOperationException n'a pas été gérée. Une erreur s'est produite lors de la réflexion du type "DBE_ProjectBase".
    Concernant la classe "DBE_ScreenBase", voici sa structure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public class DBE_ScreenBase : INotifyPropertyChanged
    {
    private Collection<DBE_ScreenObjectBase> _dBE_Screen_ObjectsCollection;
     
    public DBE_ScreenBase()
    {
         _dBE_Screen_ObjectsCollection = new Collection<DBE_ScreenObjectBase>();
    }
     
    public Collection<DBE_ScreenObjectBase> DBE_Screen_ObjectsCollection {get; set;}
    }
    et où "DBE_ScreenObjectBase":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    public class DBE_ScreenObjectBase : UIElement, INotifyPropertyChanged
    {
    private DBE_ScreenObjectType_Enum       _dBE_ScreenObject_Type;
    private Int16                           _dBE_ScreenObject_PosX1;
    private Int16                           _dBE_ScreenObject_PosY1;
     
    public DBE_ScreenObjectBase()
    {
    _dBE_ScreenObject_Type = DBE_ScreenObjectType_Enum.TYPE_NULL;
    _dBE_ScreenObject_PosX1 = 0;
    _dBE_ScreenObject_PosY1 = 0;
    }
     
    public DBE_ScreenObjectType_Enum DBE_ScreenObject_Type { get; set; }
    public Int16 DBE_ScreenObject_PosX1  { get; set; }
    public Int16 DBE_ScreenObject_PosY1  { get; set; }
    }
    Merci pour ta réponse.

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par Lelio1407 Voir le message
    Le message exact est :.
    Et il n'y a pas d'InnerException dans l'Exception ? ça m'étonne;

    Balance la serialisation en chaine complète de l'exception.

  5. #5
    Membre confirmé Avatar de Lelio1407
    Inscrit en
    Juillet 2009
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 126
    Par défaut
    Je ne comprends pas ta réponse :-(...
    Il n'y a pas d'InnerException...
    C'est exactement ce qu'il ya écrit dans la fenêtre d'erreur lorsque le programme plante...

  6. #6
    Membre confirmé Avatar de Lelio1407
    Inscrit en
    Juillet 2009
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 126
    Par défaut
    OK, en affichant "plus de détail, je trouve bien une InnerException...et en descendant, le problème viendrait de "DBE_ScreenObjectBase":
    Voici le détail...
    L'exception System.InvalidOperationException n'a pas été gérée
    Message=Une erreur s'est produite lors de la réflexion du type 'GraphConverter_DBE.DBE_ProjectBase'.
    Source=System.Xml
    StackTrace:
    à System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(TypeModel model, String ns, ImportContext context, String dataType, XmlAttributes a, Boolean repeats, Boolean openModel, RecursionLimiter limiter)
    à System.Xml.Serialization.XmlReflectionImporter.ImportElement(TypeModel model, XmlRootAttribute root, String defaultNamespace, RecursionLimiter limiter)
    à System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(Type type, XmlRootAttribute root, String defaultNamespace)
    à System.Xml.Serialization.XmlSerializer..ctor(Type type, String defaultNamespace)
    à System.Xml.Serialization.XmlSerializer..ctor(Type type)
    à GraphConverter_DBE.DBE_Editor.DBE_Editor_WriteProjectXAML(DBE_ProjectBase dBE_Editor_CurrentProject) dans D:\Works SVN\Client\CLAIRITEC\GraphConverter_DBE\40-APPLICATIFS\Tronc\30-Source\GraphConverter3\GraphConverter_DBE\UserControls\DBE_Editor.xaml.cs:ligne 796
    à GraphConverter_DBE.DBE_Editor.DBE_ButtonSave_Click(Object sender, RoutedEventArgs e) dans D:\Works SVN\Client\CLAIRITEC\GraphConverter_DBE\40-APPLICATIFS\Tronc\30-Source\GraphConverter3\GraphConverter_DBE\UserControls\DBE_Editor.xaml.cs:ligne 768
    à System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
    à System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
    à System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
    à System.Windows.UIElement.RaiseEvent(RoutedEventArgs e)
    à GraphConverter_DBE.DBE_ButtonSave.DBE_Button_Save_Click(Object sender, RoutedEventArgs e) dans D:\Works SVN\Client\CLAIRITEC\GraphConverter_DBE\40-APPLICATIFS\Tronc\30-Source\GraphConverter3\GraphConverter_DBE\UserControls\DBE_ButtonSave.xaml.cs:ligne 40
    à System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
    à System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
    à System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
    à System.Windows.UIElement.RaiseEvent(RoutedEventArgs e)
    à System.Windows.Controls.Primitives.ButtonBase.OnClick()
    à System.Windows.Controls.Button.OnClick()
    à System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)
    à System.Windows.UIElement.OnMouseLeftButtonUpThunk(Object sender, MouseButtonEventArgs e)
    à System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
    à System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
    à System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
    à System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
    à System.Windows.UIElement.ReRaiseEventAs(DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent)
    à System.Windows.UIElement.OnMouseUpThunk(Object sender, MouseButtonEventArgs e)
    à System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
    à System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
    à System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
    à System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
    à System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
    à System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args)
    à System.Windows.UIElement.RaiseEvent(RoutedEventArgs args, Boolean trusted)
    à System.Windows.Input.InputManager.ProcessStagingArea()
    à System.Windows.Input.InputManager.ProcessInput(InputEventArgs input)
    à System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)
    à System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)
    à System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
    à System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
    à MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
    à MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
    à System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
    à MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
    à System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
    à MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
    à MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
    à System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
    à System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
    à System.Windows.Application.RunDispatcher(Object ignore)
    à System.Windows.Application.RunInternal(Window window)
    à System.Windows.Application.Run(Window window)
    à System.Windows.Application.Run()
    à GraphConverter2.GC_App.Main() dans D:\Works SVN\Client\CLAIRITEC\GraphConverter_DBE\40-APPLICATIFS\Tronc\30-Source\GraphConverter3\GraphConverter2\obj\x86\Debug\GC_App.g.cs:ligne 0
    à System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
    à System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
    à Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
    à System.Threading.ThreadHelper.ThreadStart_Context(Object state)
    à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
    à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
    à System.Threading.ThreadHelper.ThreadStart()
    InnerException: System.InvalidOperationException
    Message=Une erreur s'est produite lors de la réflexion de la propriété 'DBE_Project_ScreensCollection'.
    Source=System.Xml
    StackTrace:
    à System.Xml.Serialization.XmlReflectionImporter.InitializeStructMembers(StructMapping mapping, StructModel model, Boolean openModel, String typeName, RecursionLimiter limiter)
    à System.Xml.Serialization.XmlReflectionImporter.ImportStructLikeMapping(StructModel model, String ns, Boolean openModel, XmlAttributes a, RecursionLimiter limiter)
    à System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(TypeModel model, String ns, ImportContext context, String dataType, XmlAttributes a, Boolean repeats, Boolean openModel, RecursionLimiter limiter)
    InnerException: System.InvalidOperationException
    Message=Une erreur s'est produite lors de la réflexion du type 'GraphConverter_DBE.DBE_ScreenBase'.
    Source=System.Xml
    StackTrace:
    à System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(TypeModel model, String ns, ImportContext context, String dataType, XmlAttributes a, Boolean repeats, Boolean openModel, RecursionLimiter limiter)
    à System.Xml.Serialization.XmlReflectionImporter.CreateArrayElementsFromAttributes(ArrayMapping arrayMapping, XmlArrayItemAttributes attributes, Type arrayElementType, String arrayElementNs, RecursionLimiter limiter)
    à System.Xml.Serialization.XmlReflectionImporter.ImportArrayLikeMapping(ArrayModel model, String ns, RecursionLimiter limiter)
    à System.Xml.Serialization.XmlReflectionImporter.ImportAccessorMapping(MemberMapping accessor, FieldModel model, XmlAttributes a, String ns, Type choiceIdentifierType, Boolean rpc, Boolean openModel, RecursionLimiter limiter)
    à System.Xml.Serialization.XmlReflectionImporter.ImportFieldMapping(StructModel parent, FieldModel model, XmlAttributes a, String ns, RecursionLimiter limiter)
    à System.Xml.Serialization.XmlReflectionImporter.InitializeStructMembers(StructMapping mapping, StructModel model, Boolean openModel, String typeName, RecursionLimiter limiter)
    InnerException: System.InvalidOperationException
    Message=Une erreur s'est produite lors de la réflexion de la propriété 'DBE_Screen_ObjectsCollection'.
    Source=System.Xml
    StackTrace:
    à System.Xml.Serialization.XmlReflectionImporter.InitializeStructMembers(StructMapping mapping, StructModel model, Boolean openModel, String typeName, RecursionLimiter limiter)
    à System.Xml.Serialization.XmlReflectionImporter.ImportStructLikeMapping(StructModel model, String ns, Boolean openModel, XmlAttributes a, RecursionLimiter limiter)
    à System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(TypeModel model, String ns, ImportContext context, String dataType, XmlAttributes a, Boolean repeats, Boolean openModel, RecursionLimiter limiter)
    InnerException: System.InvalidOperationException
    Message=Une erreur s'est produite lors de la réflexion du type 'GraphConverter_DBE.DBE_ScreenObjectBase'.
    Source=System.Xml
    StackTrace:
    à System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(TypeModel model, String ns, ImportContext context, String dataType, XmlAttributes a, Boolean repeats, Boolean openModel, RecursionLimiter limiter)
    à System.Xml.Serialization.XmlReflectionImporter.CreateArrayElementsFromAttributes(ArrayMapping arrayMapping, XmlArrayItemAttributes attributes, Type arrayElementType, String arrayElementNs, RecursionLimiter limiter)
    à System.Xml.Serialization.XmlReflectionImporter.ImportArrayLikeMapping(ArrayModel model, String ns, RecursionLimiter limiter)
    à System.Xml.Serialization.XmlReflectionImporter.ImportAccessorMapping(MemberMapping accessor, FieldModel model, XmlAttributes a, String ns, Type choiceIdentifierType, Boolean rpc, Boolean openModel, RecursionLimiter limiter)
    à System.Xml.Serialization.XmlReflectionImporter.ImportFieldMapping(StructModel parent, FieldModel model, XmlAttributes a, String ns, RecursionLimiter limiter)
    à System.Xml.Serialization.XmlReflectionImporter.InitializeStructMembers(StructMapping mapping, StructModel model, Boolean openModel, String typeName, RecursionLimiter limiter)
    InnerException: System.InvalidOperationException
    Message=Une erreur s'est produite lors de la réflexion de la propriété 'InputBindings'.
    Source=System.Xml
    StackTrace:
    à System.Xml.Serialization.XmlReflectionImporter.InitializeStructMembers(StructMapping mapping, StructModel model, Boolean openModel, String typeName, RecursionLimiter limiter)
    à System.Xml.Serialization.XmlReflectionImporter.ImportStructLikeMapping(StructModel model, String ns, Boolean openModel, XmlAttributes a, RecursionLimiter limiter)
    à System.Xml.Serialization.XmlReflectionImporter.InitializeStructMembers(StructMapping mapping, StructModel model, Boolean openModel, String typeName, RecursionLimiter limiter)
    à System.Xml.Serialization.XmlReflectionImporter.ImportStructLikeMapping(StructModel model, String ns, Boolean openModel, XmlAttributes a, RecursionLimiter limiter)
    à System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(TypeModel model, String ns, ImportContext context, String dataType, XmlAttributes a, Boolean repeats, Boolean openModel, RecursionLimiter limiter)
    InnerException: System.InvalidOperationException
    Message=Une erreur s'est produite lors de la réflexion du type 'System.Windows.Input.InputBinding'.
    Source=System.Xml
    StackTrace:
    à System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(TypeModel model, String ns, ImportContext context, String dataType, XmlAttributes a, Boolean repeats, Boolean openModel, RecursionLimiter limiter)
    à System.Xml.Serialization.XmlReflectionImporter.CreateArrayElementsFromAttributes(ArrayMapping arrayMapping, XmlArrayItemAttributes attributes, Type arrayElementType, String arrayElementNs, RecursionLimiter limiter)
    à System.Xml.Serialization.XmlReflectionImporter.ImportArrayLikeMapping(ArrayModel model, String ns, RecursionLimiter limiter)
    à System.Xml.Serialization.XmlReflectionImporter.ImportAccessorMapping(MemberMapping accessor, FieldModel model, XmlAttributes a, String ns, Type choiceIdentifierType, Boolean rpc, Boolean openModel, RecursionLimiter limiter)
    à System.Xml.Serialization.XmlReflectionImporter.ImportFieldMapping(StructModel parent, FieldModel model, XmlAttributes a, String ns, RecursionLimiter limiter)
    à System.Xml.Serialization.XmlReflectionImporter.InitializeStructMembers(StructMapping mapping, StructModel model, Boolean openModel, String typeName, RecursionLimiter limiter)
    InnerException: System.InvalidOperationException
    Message=Impossible de sérialiser le membre 'System.Windows.Input.InputBinding.Command' de type 'System.Windows.Input.ICommand'. Pour plus de détails, consultez l'exception interne.
    Source=System.Xml
    StackTrace:
    à System.Xml.Serialization.StructModel.CheckSupportedMember(TypeDesc typeDesc, MemberInfo member, Type type)
    à System.Xml.Serialization.StructModel.GetPropertyModel(PropertyInfo propertyInfo)
    à System.Xml.Serialization.StructModel.GetFieldModel(MemberInfo memberInfo)
    à System.Xml.Serialization.XmlReflectionImporter.InitializeStructMembers(StructMapping mapping, StructModel model, Boolean openModel, String typeName, RecursionLimiter limiter)
    à System.Xml.Serialization.XmlReflectionImporter.ImportStructLikeMapping(StructModel model, String ns, Boolean openModel, XmlAttributes a, RecursionLimiter limiter)
    à System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(TypeModel model, String ns, ImportContext context, String dataType, XmlAttributes a, Boolean repeats, Boolean openModel, RecursionLimiter limiter)
    InnerException: System.NotSupportedException
    Message=Impossible de sérialiser le membre System.Windows.Input.InputBinding.Command de type System.Windows.Input.ICommand car il s'agit d'une interface.
    InnerException:

Discussions similaires

  1. Erreur serialisation XML
    Par adosteam dans le forum C#
    Réponses: 4
    Dernier message: 19/04/2013, 15h51
  2. [servlet][xml] Erreur de parsing
    Par james2001 dans le forum Servlets/JSP
    Réponses: 26
    Dernier message: 03/11/2005, 07h08
  3. [XSL] Parser fichier xml : erreurs + incompréhensions
    Par totobouchon dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 19/07/2005, 15h47
  4. [DOM] [Package] serialisation XML
    Par Overflow64 dans le forum Format d'échange (XML, JSON...)
    Réponses: 10
    Dernier message: 19/10/2004, 16h43
  5. [Concept][Sérialisation] XML ou serializable
    Par christopheJ dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 03/06/2004, 13h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo