Ok, here's a clarification. Say you have this class:
internal class ZMPReporter : IReporter { public string Setting { get; set; } internal void Trixery(string mes, string mes1, string mes2, bool thing) { Flash(mes, mes1, mes2, thing); } public void Flash(string sender, string message, string recipient, bool isAuthor) { ... } } It's a property of another class. In C# I would use it as follows: caller.Reporter.Flash(..parameters..) If I call it in a normal IPy engine it fails to even recognize the caller variable, which is fine and totally expected (and desired). In the PrivateBinding scenario described I can call caller.Reporter.Setting and get the text data perfectly. When I try to call caller.Reporter.Flash(), though, I get the System Error: object reference not set problem. However, I can call caller.Report._ZMPReporter__Trixery() just fine, which in turn calls Flash for me. I don't mind using the name mangling overly, but I do mind having to make internal proxies for perfectly good, already existing, functions. I can't just make those methods internal because the IReporter interface demands that they be public. If this was the only class that might give me problems I might even look for a way around that, but the entire project uses Interfaces extensively. On Sat, Jan 8, 2011 at 5:36 PM, Leo Carbajal <des...@gmail.com> wrote: > Hello all, > > Almost I thought I could have my cake and eat it too. I have a large > client-server project written in C# that I wanted to be able to script with > IronPython. The biggest requirement was that I wanted external admins to be > able to provide scripts for the server to augment its functions. However, I > don't want them to have full access to the server API so I resigned myself > to write the project with everything Internal and then build public facing > classes for the functionality I wanted to expose. This, I know, to work > fine. > > however, I still want to be able to use scripts on the server myself, for > other things. I ended up using two engines, one with PrivateBinding on and > one without. The one with PrivateBinding set to true can see all private and > internal members but whenever I try to call a function from IronPython I get > an exception of "System Error: Object reference not set to an instance of an > object." It's weird because I can call on properties and get their values, > but not functions. If I do a dir() on the class, and the member, IronPython > can clearly see what they are and that they exist. If it helps, the class > i'm trying to access is internal but has all public members (for > interfaces). > > I guess my question is whether this behavior is intentional or not. Being > able to use my API on one engine for actual server work while providing a > different one for plugin\event hook writers, would help tremendously. >
_______________________________________________ Users mailing list Users@lists.ironpython.com http://lists.ironpython.com/listinfo.cgi/users-ironpython.com