C# WPF 创建一个动态程序集 把MAC 地址保存进去
以下是一个示例代码,展示如何创建一个动态程序集,并将MAC地址保存在其中:
using System;
using System.Linq;
using System.Reflection;
using System.Reflection.Emit;
namespace DynamicAssemblyExample
{
class Program
{
static void Main(string[] args)
{
// 创建动态程序集
AssemblyName assemblyName = new AssemblyName("DynamicAssembly");
AssemblyBuilder dynamicAssembly = AssemblyBuilder.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.RunAndSave);
// 创建动态模块
ModuleBuilder dynamicModule = dynamicAssembly.DefineDynamicModule("DynamicModule", "DynamicAssembly.dll");
// 创建动态类
TypeBuilder dynamicClass = dynamicModule.DefineType("DynamicClass", TypeAttributes.Public);
// 添加字段来保存MAC地址
FieldBuilder macAddressField = dynamicClass.DefineField("MacAddress", typeof(string), FieldAttributes.Public);
// 添加构造函数
ConstructorBuilder constructor = dynamicClass.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, new Type[0]);
ILGenerator constructorIL = constructor.GetILGenerator();
constructorIL.Emit(OpCodes.Ldarg_0);
constructorIL.Emit(OpCodes.Call, typeof(object).GetConstructor(Type.EmptyTypes));
constructorIL.Emit(OpCodes.Ret);
// 创建类的实例
Type dynamicType = dynamicClass.CreateType();
object dynamicObject = Activator.CreateInstance(dynamicType);
// 获取MAC地址
string macAddress = GetMacAddress();
// 设置动态类的字段值
dynamicType.GetField("MacAddress").SetValue(dynamicObject, macAddress);
// 保存动态程序集至磁盘
dynamicAssembly.Save("DynamicAssembly.dll");
Console.WriteLine("Dynamic assembly created and saved successfully!");
}
static string GetMacAddress()
{
// 获取本机的MAC地址
var macAddresses = System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()
.Where(nic => nic.OperationalStatus == System.Net.NetworkInformation.OperationalStatus.Up && nic.NetworkInterfaceType != System.Net.NetworkInformation.NetworkInterfaceType.Loopback)
.Select(nic => nic.GetPhysicalAddress().ToString())
.ToList();
return macAddresses.FirstOrDefault();
}
}
}
运行这段代码后,它将创建一个名为 "DynamicAssembly.dll" 的动态程序集,并将本机的第一个有效MAC地址保存在其中的 MacAddress 字段中
原文地址: https://www.cveoy.top/t/topic/hNQn 著作权归作者所有。请勿转载和采集!