You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avro.apache.org by "Arturo Candela Moltó (JIRA)" <ji...@apache.org> on 2017/10/31 08:26:00 UTC

[jira] [Commented] (AVRO-1981) ReflectionTypeLoadException

    [ https://issues.apache.org/jira/browse/AVRO-1981?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16226449#comment-16226449 ] 

Arturo Candela Moltó commented on AVRO-1981:
--------------------------------------------

As [~JSteward] reoported, There are problems when the Avro generated c# classes are in another dll Library instead of beeing in the ".exe" project.

My group is currently developing a project that includes a lot of shared objects and I'm developing a Project Library (dll) that includes all the generated objects between all the applications.

The problem that I'm having with this model is that a nested object cannot be deserialized because It fails. If the object is simple, It can be deserialized without problems. But if I put the generated objects in the ".exe" Project, it works as expected.

I'm going to look if I'm able to pass to avro in which dll are the object definitions so avro will be able to deserialize the objects. I find something I will add to this bug.

Regard.

> ReflectionTypeLoadException
> ---------------------------
>
>                 Key: AVRO-1981
>                 URL: https://issues.apache.org/jira/browse/AVRO-1981
>             Project: Avro
>          Issue Type: Bug
>          Components: csharp
>            Reporter: Josh Steward
>            Priority: Minor
>
> In the ObjectCreator the call to FindType(name, throwError) can throw a ReflectionTypeLoadException during the call to assembly.GetTypes() if any of the types are not able to load, MSDN link below for ref. This effectively kills the entire deserialization process. I put in a simple workaround to just continue if this happens. In my particular case it was trying to load types from a devexpress test runner dll.
> https://msdn.microsoft.com/en-us/library/system.reflection.assembly.gettypes(v=vs.110).aspx
> private Type FindType(string name,bool throwError)
> {
> //other code
> foreach (Assembly assembly in assemblies)
>                 {
>                     // Fix for Mono 3.0.10
>                     if (assembly.FullName.StartsWith("MonoDevelop.NUnit"))
>                         continue;
>                     /*Added catch in case assembly contains unloadable types*/ 
>                     try 
>                     {
>                         types = assembly.GetTypes();
>                     } 
>                     catch (ReflectionTypeLoadException ex)
>                     {
>                         continue;
>                     }                    
> //other code
> }



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)