Implementing an Interface at Runtime

后端 未结 2 455
野的像风
野的像风 2021-01-15 17:21

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

public interface ISomeInterface {
    void SomeMethod         


        
相关标签:
2条回答
  • 2021-01-15 17:54

    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>();
    
    0 讨论(0)
  • 2021-01-15 18:02

    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();
    
    0 讨论(0)
提交回复
热议问题