[Mono-list] Casting and Plugin Issue

Chris Turchin chris@turchin.net
Sun, 27 Jun 2004 20:02:55 -0700 (PDT)


hi  pablo,

i am no  expert, but i think  you need to rerference the  assembly containing
which should perhaps not be in the  same assembly as said  plugin itself.

--chris

On Sun, 27 Jun 2004, Pablo Fischer wrote:

> Hi!
>
> > I don't have any other idea, but I thought that maybe instead of doing:
> >
> > <snip>
> > my_method = t.GetMethod("MGetPosts");
> > object retVal = my_method.Invoke(activator,
> >                                 BindingFlags.Instance |
> > 				BindingFlags.NonPublic |
> > 				BindingFlags.InvokeMethod,
> >                                 null,
> >                                 new Object[]{3, user},
> >                                 null);
> > </snip>
> >
> > You could do:
> >
> > 	IPluging p = (IPlugin)t;
> > 	object retVal = p.MGetPosts(3, user);
>
> Sounds great, I tried what you said with two assemblies: one is the
> Structs.dll (*Struct.cs) and the other Plugin.dll (Plugin.cs and the
> interface IPlugin.cs), then I compiled MyApp with
>
> mcs MyApp.cs -r Structs.dll
>
> And then tried to cast it, and it fails:
>
> Test7.cs(20) error CS0246: Cannot find type `IPlugin'
>
> Also I did a Console.WriteLine to 't' (Type) and prints
> MBloggy.Plugins.IPlugin.
>
> Seems that I can't cast an interface, or what I'm doing wrong?.
>
>  Assembly a;
>  Type t;
>  MethodInfo my_method;
>
>  a = Assembly.LoadFrom("BloggerPlugin.dll");
>  t = a.GetType("MBloggy.Plugins.IPlugin");
>  Console.WriteLine(t);
>
> As I said, I'm testing what you suggested, but with Reflections the
> plugins are working great!
>
> Thanks
> Pablo
> --
> Pablo Fischer Sandoval (pablo [arroba/at] pablo.com.mx)
> Fingerprint:  5973 0F10 543F 54AE 1E41  EC81 0840 A10A 74A4 E5C0
> http://www.pablo.com.mx
> http://www.debianmexico.org
>