是否有一个.NET库,它可以发出用于创建代理类型的.NET代码?

是否有一个.NET库,它可以发出用于创建代理类型的.NET代码?,.net,.net,请遵守以下代码段: public class SomeType { public SomeType2 X { get; set; } public int Y { get; set; } } public class SomeType2 { public string Z { get; set; } } public class SomeTypeSurrogate { public static implicit operato

请遵守以下代码段:

  public class SomeType
  {
    public SomeType2 X { get; set; }
    public int Y { get; set; }
  }

  public class SomeType2
  {
    public string Z { get; set; }
  }

  public class SomeTypeSurrogate
  {
    public static implicit operator SomeTypeSurrogate(SomeType obj) { return new SomeTypeSurrogate { X = obj.X, Y = obj.Y }; }
    public static implicit operator SomeType(SomeTypeSurrogate surrogate) { return new SomeType { X = surrogate.X, Y = surrogate.Y }; }
    public SomeType2Surrogate X { get; set; }
    public int Y { get; set; }
  }

  public class SomeType2Surrogate
  {
    public static implicit operator SomeType2Surrogate(SomeType2 obj) { return new SomeType2Surrogate { Z = obj.Z }; }
    public static implicit operator SomeType2(SomeType2Surrogate surrogate) { return new SomeType2 { Z = surrogate.Z }; }
    public string Z { get; set; }
  }
我的问题是有一个.NET库,它可以生成代理类型,就像示例中给定的“真实”类型以及属性的描述一样,这些类型必须在代理中找到

例如,虚构的代码可能是这样的(我的灵感来自protobuf net的RuntimeTypeModel):

在使用代理项生成程序集之前:

var model = new TypeSurrogateModel();
model.SetSurrogateNameScheme(SurrogateNameScheme.AddSuffix, "Surrogate");
model.AddType(typeof(SomeType), "X", "Y");
model.AddType(typeof(SomeType2), "Z");
model.GenerateSource("Surrogates.cs");
在创建并编译了subrogates.cs之后,程序集将以常规类型安全的方式使用它:

SomeType obj = GetSomeTypeInstance();
SomeTypeSurrogate surrogate = obj;

你看过像PostSharp这样的AOP库吗?我不确定您是否可以做一些涉及到的事情,但样板代码生成是AOP存在的理由。是的,我做了。事实上我用它。在这方面,我看不到它的好处。在我看来,我仍然需要写几乎所有的东西。
SomeType obj = GetSomeTypeInstance();
SomeTypeSurrogate surrogate = obj;