C# WPF 创建一个动态程序集 把MAC 地址保存进去在读取文件获取MAC值
要创建一个动态程序集,可以使用C#中的AssemblyBuilder类。以下是一个例子,展示了如何创建一个动态程序集,并将MAC地址保存在其中:
using System;
using System.IO;
using System.Reflection;
using System.Reflection.Emit;
public class Program
{
public static void Main(string[] args)
{
// 获取MAC地址
string macAddress = GetMacAddress();
// 创建动态程序集
AssemblyName assemblyName = new AssemblyName("DynamicAssembly");
AssemblyBuilder assemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.RunAndSave);
// 创建模块
ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("DynamicModule", "DynamicAssembly.dll");
// 创建类
TypeBuilder typeBuilder = moduleBuilder.DefineType("DynamicClass", TypeAttributes.Public);
// 创建字段
FieldBuilder fieldBuilder = typeBuilder.DefineField("MacAddress", typeof(string), FieldAttributes.Public | FieldAttributes.Static);
// 在类的静态构造函数中保存MAC地址
ConstructorBuilder constructorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Static, CallingConventions.Standard, Type.EmptyTypes);
ILGenerator constructorIL = constructorBuilder.GetILGenerator();
constructorIL.Emit(OpCodes.Ldstr, macAddress);
constructorIL.Emit(OpCodes.Stsfld, fieldBuilder);
constructorIL.Emit(OpCodes.Ret);
// 创建类并保存程序集
Type dynamicType = typeBuilder.CreateType();
assemblyBuilder.Save("DynamicAssembly.dll");
// 使用反射读取MAC地址
Assembly dynamicAssembly = Assembly.LoadFile(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "DynamicAssembly.dll"));
Type dynamicClassType = dynamicAssembly.GetType("DynamicClass");
FieldInfo macAddressField = dynamicClassType.GetField("MacAddress", BindingFlags.Public | BindingFlags.Static);
string savedMacAddress = (string)macAddressField.GetValue(null);
Console.WriteLine("Saved MAC Address: " + savedMacAddress);
}
private static string GetMacAddress()
{
// 获取MAC地址的代码
// ...
return "00-00-00-00-00-00"; // 假设获取到了MAC地址,并返回
}
}
这段代码将创建一个名为DynamicAssembly.dll的动态程序集,并在其中保存了MAC地址。然后,使用反射从程序集中读取保存的MAC地址。请确保将GetMacAddress()方法替换为实际获取MAC地址的代码
原文地址: https://www.cveoy.top/t/topic/hNQ7 著作权归作者所有。请勿转载和采集!