Skip to content

Working with interfaces

Ben Longo edited this page Apr 10, 2022 · 3 revisions

Calling methods of explicitly implemented interfaces

If a class implements an interface explicitly, you will have to "cast" an object to that interface in order to before invoking its methods. Consider the following C# code:

namespace Example {
  interface IExplicit {
    int Add(int a, int b);
  }

  public class ExplicitImpl : IExplicit {
    int IExplicit.Add(int a, int b) {
      return a + b;
    }
  }
}

The following example demonstrates how to call Add:

from Example import IExplicit, ExplicitImpl

impl = ExplicitImpl()

# Wont work:
impl.Add(1, 2)

# Does work:
ifc = IExplicit(impl)
ifc.Add(1, 2)

Extracting the implementation object from an interface object

Python.NET provides two properties for accessing the object implementing the interface:

  • __raw_implementation__ returns the pure CLR object.
  • __implementation__ returns the object after first passing it through Python.NETs encoding/marshalling logic.

This is a way to "cast" from an interface to the implementation class.

Here is an example:

import System
clrVal =  System.Int32(100)
i = System.IComparable(clrVal)
100 == i.__implementation__ # True
clrVal == i.__raw_implementation__ # True
Clone this wiki locally
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy