Impromptu是一个动态生成代码实现接口的库,可以非常方便我们实现DuckType编程:

    public interface IUser
    {
        string Name { get; set; }
        int Age { get; set; }
        string Address { get; set; }
    }


    var obj = new { Name = "jone", Age = 28 };
    IUser user = Impromptu.ActLike<IUser>(obj);

    Console.WriteLine(user.Name);

其原理是内部用Emit来动态生成了一个实现该接口的对象,从而实现接口的封装。利用这个特性,我们可以把Impromptu和ExpandoObject结合使用,从而非常方便的动态实现接口。

    var user = Impromptu.ActLike<IUser>(new ExpandoObject());
    user.Name = "jone";
    Console.WriteLine(user.Name);

相关文章:

  • 2022-02-18
  • 2022-12-23
  • 2022-12-23
  • 2021-12-26
  • 2022-12-23
  • 2022-01-15
  • 2022-12-23
猜你喜欢
  • 2021-10-06
  • 2022-01-13
  • 2022-02-24
  • 2022-01-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-17
相关资源
相似解决方案