C#属性生成器:如何设置值

本文关键字:设置 何设置 属性 | 更新日期: 2023-09-27 18:19:33

我已经使用PropertyBuilder创建了一个属性生成器(它位于类型内部,使用TypeBuilder构建,您可以猜测它位于模块内部。依此类推,直到Assembly)

我想在刚构建完属性后设置它的值(在本例中具体为Dictionary<string,object>)。它有一个SetValue方法,但我被抛出了第一个参数(Object obj:我正在设置的对象值)。

这是我的:

Dictionary<string,Object> expectations = new Dictionary<string,object>();
PropertyBuilder builder = typeBuilder.DefineProperty("Expectations", 
                                PropertyAttributes.HasDefault,
                                typeof(Dictionary<string, Object>), null);
//builder.SetValue(???)
return builder;

我的方向是否正确?

更新

好的,所以SetValue的Object参数是一个对象,它保存了我要设置的值的属性。然而,尽管我已经通过TypeBuilder定义了属性,但它并没有被创建(因为您必须调用CreateType()并实例化它)。

长话短说?首先定义所有内容,然后创建它,然后使用创建的对象作为第一个参数通过SetValue分配值。

C#属性生成器:如何设置值

好的,所以SetValue的Object参数是保存我试图设置的值的属性的对象。然而,尽管我已经通过TypeBuilder定义了该属性,但它并没有被创建(因为您必须调用CreateType()并实例化它)。

长话短说?首先定义所有内容,然后创建它,然后使用创建的对象作为第一个参数通过SetValue分配值。