可以xml读入enum的定义,然后动态创建吗?
解决方案 »
- winform如何连接sqlce
- 一个用户账号绑定多个微博(不同的公司的,新浪,腾讯)的账号,谁有这方面的经验的
- 在visual studio中连接数据库时提示权限不够?
- 让.aspx文件为空,用户请求网页后,再在程序里加载网页,应该怎么办?
- socket多线程求解
- C#的Socket
- 我的机器是win xp,每次启动时默认网站总是停止的,怎么配置才能使开机后默认网站是服务状态,请高手指点.
- 受不了了。。。VS自带数据库没办法Insert
- 我想在页面上搞一个打印按钮,按钮的功能是产生一个打开的word文件,里面有当前页面的某些内容,目的是为了打印
- 一个问题
- C#怎么判断数字类型还是字符类型
- 在C#代码中,怎样实现触发键盘键?
System.Reflection.AssemblyName name = new System.Reflection.AssemblyName("myassembly");
System.Reflection.Emit.AssemblyBuilder assmbly = System.AppDomain.CurrentDomain.DefineDynamicAssembly(name, System.Reflection.Emit.AssemblyBuilderAccess.Save);
System.Reflection.Emit.ModuleBuilder module = assmbly.DefineDynamicModule("mymodule", savedfile, true);
System.Reflection.Emit.EnumBuilder en = module.DefineEnum("myenm", System.Reflection.TypeAttributes.Public, typeof(System.Int16));
System.Reflection.Emit.FieldBuilder field0 = en.DefineLiteral("First", (System.Int16)0);
System.Reflection.Emit.FieldBuilder field1 = en.DefineLiteral("Second", (System.Int16)1);
System.Reflection.Emit.FieldBuilder field2 = en.DefineLiteral("Third", (System.Int16)2);
en.CreateType();
assmbly.Save(savedfile);
System.Reflection.Emit 命名空间
谢谢你的点拨,用System.Reflection.Emit 动态定义了一个Enum type,有没有可能接着利用这个Type来生成一个Instance呢?
我想做一个Service根据xml读入Enum的定义然后返回这个enum的instance
enmValues.Add(0, "First");
enmValues.Add(1, "Second");
enmValues.Add(2, "Third");
//定义类型,这里可以从xml里读取 System.String savedfile = "myasembly.dll";
System.Reflection.AssemblyName name = new System.Reflection.AssemblyName("myassembly");
System.Reflection.Emit.AssemblyBuilder assmbly = System.AppDomain.CurrentDomain.DefineDynamicAssembly(name, System.Reflection.Emit.AssemblyBuilderAccess.RunAndSave);
System.Reflection.Emit.ModuleBuilder module = assmbly.DefineDynamicModule("mymodule", savedfile, true);
System.Reflection.Emit.EnumBuilder en = module.DefineEnum("myenm", System.Reflection.TypeAttributes.Public, typeof(int)); System.Collections.Generic.IEnumerator<System.Collections.Generic.KeyValuePair<int, System.String>> e = enmValues.GetEnumerator();
while (e.MoveNext())
{
en.DefineLiteral(e.Current.Value, e.Current.Key);
}
System.Type t = en.CreateType();
//把类型保存起来
assmbly.Save(savedfile); //------------------------------------------------------- System.String current = "First";
System.Object o = System.Enum.Parse(t, current);
return o;
可以直接返回动态生成的Enum对象吗?
例如你的代码里面动态定义的 myenm
我需要实现类似这么一个接口 myenm GetmyenmInstance()
只是在运行时动态生成的,编译时根本不知道有myenm,
如果写出myenm GetmyenmInstance();
肯定是不能通过编译
最多只有System.Enum GenmyenmInstance();