[Mono-bugs] [Bug 590140] New: Evaluator fails to evaluate expression to create Generic class instance

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Mon Mar 22 06:56:48 EDT 2010


http://bugzilla.novell.com/show_bug.cgi?id=590140

http://bugzilla.novell.com/show_bug.cgi?id=590140#c0


           Summary: Evaluator fails to evaluate expression to create
                    Generic class instance
    Classification: Mono
           Product: Mono: Compilers
           Version: 1.2.0
          Platform: Other
        OS/Version: Other
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: C#
        AssignedTo: mono-bugs at lists.ximian.com
        ReportedBy: maadhvaryu at yahoo.com
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---
           Blocker: ---


User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US)
AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.1.249.1036 Safari/532.5

I am trying to evaluate an expression to create generic class which is inside
an assembly called DynamicLibrary- I have created, a class in question is the
class named Fx<T> and is contained in DynamicLibrary.Function32 Namespace.
This class has a black-hole constructor Fx(params object[] objs) which can
accept any arguments.

Here is my code:
  internal static class CSharp
    {
        private static string sb = @"
            using System;
            using System.Collections.Generic;
            using System.Collections;
            using DynamicLibrary;
            using DynamicLibrary.Math32;
            using DynamicLibrary.Math32.Arithmetic;
            using DynamicLibrary.Math32.Statistics;
            using DynamicLibrary.Function32;
            using DynamicLibrary.Boolean32;
            using DynamicLibrary.DateTime32;
            using DynamicLibrary.String32;
            using DynamicLibrary.Data32;";


        public static object Evaluate(string Expression)
        {
            try
            {
                Evaluator.Run(sb);
                Evaluator.ReferenceAssembly(Assembly.GetExecutingAssembly());

                //Evaluator.LoadAssembly("DynamicLibrary");
                return Evaluator.Evaluate(Expression + ";");
            }
            catch(Exception ex)
            {
                return null; 
            }
        }
    }

Here is what I try to get:
object o= CSharp.Evaluate("new
DynamicLibrary.Function32.Fx<System.Double>(1,2,3)")

And here is the exception details:

{"An attempt was made to load a program with an incorrect format. (Exception
from HRESULT: 0x8007000B)"}
    [System.BadImageFormatException]: {"An attempt was made to load a program
with an incorrect format. (Exception from HRESULT: 0x8007000B)"}
    Data: {System.Collections.ListDictionaryInternal}
    HelpLink: null
    InnerException: null
    Message: "An attempt was made to load a program with an incorrect format.
(Exception from HRESULT: 0x8007000B)"
    Source: "interactive1"
    StackTrace: "   at Class0.Host(Object& $retval)\r\n   at
Mono.CSharp.Evaluator.Evaluate(String input, Object& result, Boolean&
result_set) in D:\\Mukesh\\GMCS C#\\eval.cs:line 301\r\n   at
Mono.CSharp.Evaluator.Evaluate(String input) in D:\\Mukesh\\GMCS
C#\\eval.cs:line 357\r\n   at DynamicLibrary.Compiler32.CSharp.Evaluate(String
Expression) in D:\\Mukesh\\Data Organizer C#\\Dynamic
Library\\Compiler32.cs:line 47"
    TargetSite: {Void Host(System.Object ByRef)}




Reproducible: Always

Steps to Reproduce:
1. Reference any assembly which contains generic class definition
2. use Evaluator.Run ("using myassembly")
3. use Evaluator.Evaluate("new class<T>(....)")
Actual Results:  
instead of actual class null is returned

Expected Results:  
an instance of generic class should be returned

-- 
Configure bugmail: http://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the mono-bugs mailing list