装饰一个匿名类型

时间:2013-07-27 23:08:10

标签: c# anonymous-types

所以我尝试了这个:

static void Main() {
    var anonymous = new { Key = "Key", Value = "Value" };

    AssemblyBuilder builder = AssemblyBuilder.DefineDynamicAssembly(new AssemblyName( "MineAsm"), AssemblyBuilderAccess.Run);
    ModuleBuilder modBuilder = builder.DefineDynamicModule("MineModule");
    TypeBuilder mineType = modBuilder.DefineType("MineType", TypeAttributes.Public, anonymous.GetType());

    Type definedType = mineType.CreateType();
    Object instance = Activator.CreateInstance(definedType);

    foreach (PropertyInfo property in definedType.GetProperties()) {
        Console.WriteLine("{0} {1}", property.Name, property.GetValue(instance));
    }

    Console.ReadLine();
}

但我得到一个例外,主要是说匿名类型是密封的。真棒。我正在尝试的是能够使用标识值已更改的属性来包装匿名类型。我知道匿名类型本身不能被修改,但能够以某种方式装饰它以便编译器足够好从new { }语句生成基本结构会很好,但随后我运行它使它更普遍有用(例如使属性像各种ORM一样可监视),但编译器仍然理解结构,因此能够提供智能感知。

这是否可行,即使不使用我目前正在关注的路径?

0 个答案:

没有答案