我正在从事图书馆项目。我会将这个库dll分发给其他一些项目以供参考。我的目标是每次构建项目(引用我的dll的客户端项目)时都生成一个枚举。
我想在构建时基于从api获取的值创建Enum类型。 我正在使用.net标准库(2.0)。 要求是在编译时根据一个值创建一个Enum,我将从api调用中获取该值。 我尝试了以下代码
// Get the current application domain for the current thread
AppDomain currentDomain = AppDomain.CurrentDomain;
// Create a dynamic assembly in the current application domain,
// and allow it to be executed and saved to disk.
AssemblyName name = new AssemblyName("MyEnums");
AssemblyBuilder assemblyBuilder = currentDomain.DefineDynamicAssembly(name,
AssemblyBuilderAccess.RunAndSave);
// Define a dynamic module in "MyEnums" assembly.
// For a single-module assembly, the module has the same name as the assembly.
ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule(name.Name,
name.Name + ".dll");
// Define a public enumeration with the name "MyEnum" and an underlying type of Integer.
EnumBuilder myEnum = moduleBuilder.DefineEnum("EnumeratedTypes.MyEnum",
TypeAttributes.Public, typeof(int));
但是“ DefineDynamicAssembly”不可用。
有人可以引导我这样做吗? 提前致谢。
答案 0 :(得分:0)
编写一个可以在需要时写入.cs文件的程序。在Visual Studio中,可以在构建项目之前和之后运行命令。 对于在编译时创建Code而言,这是最简单的方法。根据它应该有多复杂,一个简单的批处理文件就足够了,但是我不认为使用批处理文件进行api调用那么容易。
我认为您的意思是在运行时创建枚举,这是因为DefineDynamicAssembly的麻烦。