Please do not reply to this email- if you want to comment on the bug, go to the URL shown below and enter your comments there.
Changed by [EMAIL PROTECTED] http://bugzilla.ximian.com/show_bug.cgi?id=75652 --- shadow/75652 2005-07-27 19:59:58.000000000 -0400 +++ shadow/75652.tmp.30267 2005-07-27 19:59:58.000000000 -0400 @@ -0,0 +1,89 @@ +Bug#: 75652 +Product: Mono: Class Libraries +Version: 1.1 +OS: +OS Details: Ubuntu +Status: NEW +Resolution: +Severity: +Priority: Normal +Component: System +AssignedTo: [EMAIL PROTECTED] +ReportedBy: [EMAIL PROTECTED] +QAContact: [EMAIL PROTECTED] +TargetMilestone: --- +URL: +Cc: +Summary: Assembly.GetType(string, bool, bool) overload be busted, yo. + +****Description of Problem: + +Assembly.GetType(string, bool, bool) overload fails to handle retrieving +types from an assembly generated in memory. Works perfectly under +Microsoft.NET runtime. + +Note that this overload only fails when accessing an assembly generated *IN +MEMORY*; loading an assembly via Assembly.LoadFile() or any other method +works perfectly fine. + +****Steps to reproduce the problem: + +Compile the following C# application and attempt to run it: +[CODE] +using System; +using System.Text; +using System.IO; +using System.Reflection; +using Microsoft.CSharp; +using System.CodeDom.Compiler; +class MainClass +{ + public static void Main(string[] args) + { + StringBuilder code = new StringBuilder(); + StringWriter writer = new StringWriter(code); + writer.WriteLine("using System;"); + writer.WriteLine("public sealed class MyClass : System.Object"); + writer.WriteLine("{"); + writer.WriteLine("public static string foo(string input)"); + writer.WriteLine("{ return input; }"); + writer.WriteLine("private MyClass() { }"); + writer.WriteLine("}"); + + CSharpCodeProvider cp = new CSharpCodeProvider(); + ICodeCompiler ic = cp.CreateCompiler(); + CompilerParameters param = new CompilerParameters(); + param.GenerateInMemory = true; + param.GenerateExecutable = false; + param.ReferencedAssemblies.Add("system"); + + CompilerResults results = ic.CompileAssemblyFromSource(param, +code.ToString()); + + Type myClass = results.CompiledAssembly.GetType("MyClass", true, true); + MethodInfo foo = myClass.GetMethod("foo"); + string output = (string)foo.Invoke(null, new object[] { "Jpop rocks!" }); + Console.WriteLine(output); + } +} +[CODE] + +****Actual Results: + +A tersely worded "null reference exception." Poking a bit under the hood, +Mono actually complains about a System.TypeLoadException. but don't quote +me on that - I only noticed the exception rising when I wrote this +test-case in Boo. In C#, just a very uninformative null reference exception. + +****Expected Results: + +Invokation of the static method 'foo', resulting in the string 'Jpop +Rocks!' printed to STDOUT. + +****How often does this happen? + +When-ever you run the application! + +****Additional Information: + +Running under Mono 1.1.8.3 ('or something'). _______________________________________________ mono-bugs maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
