[Python.NET] Accessing class interface with private methods
Brian Lloyd
brian.lloyd at revolutionhealth.com
Wed Dec 12 19:32:42 CET 2007
have you tried explicitly calling this through the interface? You
need to do something similar to a cast in C#:
from mynamespace import Foo, Iface
inst = Foo() # create an instance
wrapped = Iface(inst) # 'cast' to the interface
wrapped.Func() # should now work
hope this helps,
-Brian
On 12/9/07 4:01 PM, "lance23runner" <lance23runner at yahoo.com> wrote:
>
> I forgot to add "Implements Iface.Func" to method Func, I hope this doesn't
> confuse my problem. It is added below.
>
> The private method Func is accessible in VB.NET using the public IFACE.
> This is intended so the class does not see these methods, but it can access
> them using the IFACE property. A protected method doesn't provide the
> abstraction.
>
> Thanks,
> -Alex
>
>
>
> Feihong Hsu wrote:
>>
>> This is not supported. You can't access private methods in C# or VB.NET
>> either, so why should Python.NET be able to access them? But one thing to
>> note is that you CAN access protected methods directly in Pyhon.NET (you
>> don't have to make a subclass to use a protected method).
>>
>> - Feihong
>>
>> alex omoto <lance23runner at yahoo.com> wrote: Hi,
>>
>> I am having trouble using Python.NET in accessing class interface methods
>> that are declared private. As an example,
>>
>> Public Interface Iface
>> Property Func() As Boolean
>> End Interface
>>
>> Public Class Foo
>> Implements Iface
>>
>> Private Function Func() As Boolean Implements Iface.Func
>> Return True
>> End Function
>>
>> Public ReadOnly Property IFACE() As Iface
>> Get
>> Return Me
>> End Get
>> End Property
>> End Class
>>
>> Then using Python 2.5 with Python.Net 2.0 alpha 2, I cannot access the
>> method. Is this supported?
>>
>> import clr
>> import Foo
>> f = Foo()
>> f.IFACE # OK
>> f.IFACE.Func() # results in Attribute error
>>
>>
>> Thanks,
>> Alex
More information about the PythonDotNet
mailing list