Ibrahim Najjar
Ibrahim Najjar

Reputation: 19423

Implementing an Interface at Runtime

Is it possible to make an already compiled class implement a certain interface at run time, an example:

public interface ISomeInterface {
    void SomeMethod();
}

public class MyClass {
    // this is the class which i want to implement ISomeInterface at runtime
}

is this possible, if yes then how ?

Upvotes: 2

Views: 684

Answers (2)

Kenneth
Kenneth

Reputation: 28737

You could use the Adapter pattern to make it appear your implementing the interface. This would look somewhat like this:

public interface ISomeInterface {
    void SomeMethod();
}

public class MyClass {
    // this is the class which i want to implement ISomeInterface at runtime
}

public SomeInterfaceAdapter{
    Myclass _adaptee;
    public SomeInterfaceAdapter(Myclass adaptee){
        _adaptee = adaptee;
    }
    void SomeMethod(){
        // forward calls to adaptee
        _adaptee.SomeOtherMethod();
    }
}

Using this would look somewhat like this:

Myclass baseobj = new Myclass();
ISomeInterface obj = new SomeInterfaceAdapter(baseobj);
obj.SomeMethod();

Upvotes: 3

lightbricko
lightbricko

Reputation: 2709

Well almost. You can use impromptu-interface.

https://github.com/ekonbenefits/impromptu-interface

Basic example from https://github.com/ekonbenefits/impromptu-interface/wiki/UsageBasic :

using ImpromptuInterface;

public interface ISimpleClassProps
{
  string Prop1 { get;  }
  long Prop2 { get; }
  Guid Prop3 { get; }
}

var tAnon = new {Prop1 = "Test", Prop2 = 42L, Prop3 = Guid.NewGuid()};
var tActsLike = tAnon.ActLike<ISimpleClassProps>();

Upvotes: 6

Related Questions