Необходимо сгенерировать сборку содержащую структуру со строковой константой:
namespace n {
struct Alpha {
public const string DATA = "Alpha";
}
}
Можно ли это сделать силами Reflection.Emit ? С генерацией классов я разобрался, а вот касательно генерации структур информацию найти не могу. Заранее спасибо.
Здравствуйте, t.zamaleev, Вы писали:
TZ>Доброго времени суток.
TZ>Необходимо сгенерировать сборку содержащую структуру со строковой константой:
TZ>
namespace n {
TZ> struct Alpha {
TZ> public const string DATA = "Alpha";
TZ> }
TZ>}
TZ>Можно ли это сделать силами Reflection.Emit ? С генерацией классов я разобрался, а вот касательно генерации структур информацию найти не могу. Заранее спасибо.
Можно, конечно!
Следует лишь воспользоваться данной перегрузкой метода ModuleBuilder.DefineType():
public TypeBuilder DefineType(
string name,
TypeAttributes attr,
Type parent
)
и указать в качестве наследуемого типа typeof(System.ValueType).
Удачи!
Re: Reflection.Emit генерация сборки со структурой
private static void Generate() {
var an = new AssemblyName("Beta") { Version = new Version("1.0.0.0") };
var ab = AppDomain.CurrentDomain.DefineDynamicAssembly(an, AssemblyBuilderAccess.Save);
var mb = ab.DefineDynamicModule("BetaModule", "Beta.dll");
var tb = mb.DefineType("n.Beta", TypeAttributes.Public, typeof(System.ValueType));
var fb = tb.DefineField("DATA", typeof(string), FieldAttributes.Public | FieldAttributes.Literal);
fb.SetConstant("Beta");
tb.CreateType();
ab.Save("Beta.dll");
}
Re: Reflection.Emit генерация сборки со структурой
Здравствуйте, hexamino, Вы писали:
H>А какая разница — создавать константу в классе или в структуре?
Фактически не какой, но с идеологической точки зрения мне кажется что в данном случае правильнее использовать структуру, ну и для общего развития хотелось узнать можно ли такое сделать и если можно то как.
Re[3]: Reflection.Emit генерация сборки со структурой
Здравствуйте, t.zamaleev, Вы писали:
TZ>Можно ли это сделать силами Reflection.Emit ? С генерацией классов я разобрался, а вот касательно генерации структур информацию найти не могу.