You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avro.apache.org by "ASF subversion and git services (JIRA)" <ji...@apache.org> on 2019/03/01 20:43: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=16782050#comment-16782050 ] 

ASF subversion and git services commented on AVRO-1981:
-------------------------------------------------------

Commit 846a9a1bb85e9832b696970c96e6089d43c3ee6b in avro's branch refs/heads/master from Brian Lachniet
[ https://gitbox.apache.org/repos/asf?p=avro.git;h=846a9a1 ]

AVRO-1981: Catch exceptions loading types from assemblies in C#

Loading all types from all assemblies in the current domain
could throw an exception for a variety of non-fatal reasons.
Simply catch these exceptions and continue.


> ReflectionTypeLoadException
> ---------------------------
>
>                 Key: AVRO-1981
>                 URL: https://issues.apache.org/jira/browse/AVRO-1981
>             Project: Apache Avro
>          Issue Type: Bug
>          Components: csharp
>    Affects Versions: 1.8.2
>            Reporter: Josh Steward
>            Assignee: Brian Lachniet
>            Priority: Minor
>             Fix For: 1.9.0
>
>
> 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
(v7.6.3#76005)