static DI()
 {
     config = PublicDI.config;
     log = PublicDI.log;
     reflection = new O2FormsReflectionASCX();
     cecilUtils = new CecilUtils();
     monoCecil = new O2MonoCecil();
     assemblyAnalysis = new AssemblyAnalysisImpl();
 }
        public AssemblyAnalysisImpl()
        {
        	reflectionEngine = new O2FormsReflectionASCX();
        
            //cecilEngineAvailble = (DI.monoCecil != null);
            if (false == CecilEngineAvailble)
                PublicDI.log.error(
                    "Not all required DI (Dependency Injections) are available for the CECIL Engine (which will not be available)");

            //reflectionEngineAvailble = (DI.reflectionASCX != null);
            if (false == ReflectionEngineAvailble)
                PublicDI.log.error(
                    "Not all required DI (Dependency Injections) are available for the REFLECTION Engine (which will not be available)");            
        }
 /// <summary>
 /// Executes method
 /// </summary>
 /// <param name="mMethodToExecute"></param>
 /// <param name="dgvSourceCode_SelectedMethodParameters"></param>
 /// <param name="tbSourceCode_InvocationResult"></param>
 /// <param name="dgvSourceCode_InvocationResult"></param>
 /// <param name="oLiveInstanceOfObject"></param>
 public static Thread executeMethod(MethodInfo mMethodToExecute,
                                  DataGridView dgvSourceCode_SelectedMethodParameters,
                                  TextBox tbSourceCode_InvocationResult,
                                  DataGridView dgvSourceCode_InvocationResult, Object oLiveInstanceOfObject)
 {
     return O2Thread.mtaThread(mMethodToExecute.Name, () =>
                            {
                                Object[] aoMethodParameters =
                                    new O2FormsReflectionASCX().getParameterObjectsFromDataGridColumn(
                                        dgvSourceCode_SelectedMethodParameters, "Value");
                                new O2FormsReflectionASCX().executeMethodAndOutputResultInTextBoxOrDataGridView(
                                    mMethodToExecute, aoMethodParameters,
                                    oLiveInstanceOfObject,
                                    tbSourceCode_InvocationResult,
                                    dgvSourceCode_InvocationResult);
                            });
 }