[Mono-list] IsSubclassOf and Assembly.LoadFrom problem
Colin JN Breame
colin at breame.net
Wed Jan 4 20:18:53 EST 2006
I've come across this problem before but never solved it (even after searching
the internet for several hours!). So I thought I'd ask here....
I have two dlls:
a.dll - contains interface a.a
b.dll - contains class b.b that implements a.a
A main program loads b.dll and tests each type in the assembly to find out if
it implements a.a. This all works except the class b.b (that I know
implements a.a) says that it doesn't! e.g. IsSubclassOf returns false.
I think that this might have something to do with AppDomains or some other
restriction of loading and using types from a dynamically loaded assembly.
I'm really stuck with this (got that banging my head against a brick wall
feeling...) so any help would be greatly appreciated.
Below is a test setup if you're wondering what I mean...
Thanks,
-- Colin
a.cs:
namespace a {
public interface a {
string hello();
}
}
b.cs:
namespace b {
public class b : a.a {
public string hello() {
return "hello world";
}
}
}
main.cs:
using System;
using System.Reflection;
namespace test {
public class test {
public static void Main() {
Assembly a = Assembly.LoadFrom("b.dll");
Type[] types = a.GetTypes();
foreach (Type t in types) {
if (t.IsSubclassOf(typeof(a.a))) {
Console.WriteLine("{0} is a subclass of {1}", t, typeof(a.a));
} else {
Console.WriteLine("{0} is not a subclass of {1}", t, typeof(a.a));
}
}
}
}
}
build.sh:
mcs -target:library -out:a.dll a.cs &&
mcs -target:library -out:b.dll -r:a.dll b.cs &&
mcs -out:test.exe -r:a.dll test.cs
More information about the Mono-list
mailing list