lundi 20 juin 2016

Exception in Release mode only while reflectively creating objects

My application is failing only when I attempt to launch it in release mode. Debug mode works fine. I am getting an error that reads

An unhandled exception of type 'System.Reflection.TargetInvocationException' occurred in PresentationFramework.dll

Additional information: Exception has been thrown by the target of an invocation.

Because this only happens in release, it's been a bit difficult to debug. However, if I uncheck the "Optimize code" checkbox in the project properties, I am able to see an exception thrown in this method:

 private static T MakeObject<T>(Type type) where T :class
    {
        //Default reflective behavior to create an instance with an empty constructor
        //
        //*note: .GetConstructor can return null.
        object obj = null;
        T tObj = default(T);

        ConstructorInfo ci = type.GetConstructor(TypeInfo.EmptyTypes);

        if (ci != null)
        {
            obj = ci.Invoke(new object[] { /* Empty */});

            tObj = obj as T;
        }

        if (tObj == null)
            throw new InvalidCastException("Fatal error occurred within NavigationService (GetConstructor). Type: " + type.ToString());

        return tObj;
    }

on this line:

ConstructorInfo ci = type.GetConstructor(TypeInfo.EmptyTypes);

The exception reads:

An exception of type 'System.NullReferenceException' occurred in LWDCloudManager.exe but was not handled in user code

Additional information: Object reference not set to an instance of an object.

Does anyone have any suggestions on how I might be able either fix this issue, or how to dig deeper and understand why this could be happening in release mode only?





Aucun commentaire:

Enregistrer un commentaire