动态编译程序集,怎么样获取Attribute

faib920 faib920 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
var assembly = AppDomain.CurrentDomain.DefineDynamicAssembly(new AssemblyName("dynamic"), AssemblyBuilderAccess.Run);
var module = assembly.DefineDynamicModule("Main");
var t1 = module.DefineType("t1", TypeAttributes.Class | TypeAttributes.Public);
var t2 = module.DefineType("t2", TypeAttributes.Class | TypeAttributes.Public);
var con = typeof(MetadataTypeAttribute).GetConstructor(new [] { typeof(Type) });
var type1 = t1.CreateType();
var type2 = t2.CreateType();

t1.SetCustomAttribute(new CustomAttributeBuilder(con, new[] { t2.UnderlyingSystemType }));

Console.WriteLine(type1);
Console.WriteLine(type2);
Console.WriteLine(assembly.GetReferencedAssemblies());
Console.WriteLine(type1.GetCustomAttributes<MetadataTypeAttribute>());


最后一句报
System.IO.FileNotFoundException : 未能加载文件或程序集“dynamic, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。系统找不到指定的文件。
在 System.Reflection.CustomAttribute._CreateCaObject(RuntimeModule pModule, IRuntimeMethodInfo pCtor, Byte** ppBlob, Byte* pEndBlob, Int32* pcNamedArgs)
在 System.Reflection.CustomAttribute.CreateCaObject(RuntimeModule module, IRuntimeMethodInfo ctor, ref IntPtr blob, IntPtr blobEnd, ref Int32 namedArgs)
在 System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeModule decoratedModule, Int32 decoratedMetadataToken, Int32 pcaCount, RuntimeType attributeFilterType, Boolean mustBeInheritable, IList derivedAttributes, Boolean isDecoratedTargetSecurityTransparent)
在 System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeType type, RuntimeType caType, Boolean inherit)
在 System.RuntimeType.GetCustomAttributes(Type attributeType, Boolean inherit)
在 Fireasy.Common.Extensions.ReflectionExtension.GetCustomAttributes(ICustomAttributeProvider provider, Boolean inherit) 位置 ReflectionExtension.cs: line 70
在 Fireasy.Data.Test.Entity.EntityBuilderTests.Test2() 位置 EntityBuilderTests.cs: line 98
...全文

相关推荐

编译程序 好东西

标题中的“编译程序 好东西”暗示了我们讨论的是与编译技术相关的知识,而编译程序是将高级编程语言转换为机器语言的重要工具。

cnmdbkao

Winform可视化表单设计器:Smart.FormDesigner与动态表单实现

在传统信息管理系统的开发中,表单字段频繁变更是常见的痛点,每次调整都需重新编译发布,效率低下。低代码与可视化拖拽理念的兴起,为解决这一问题提供了新思路:通过设计时与运行时分离,让界面布局由配置驱动。在Winform技术栈中,利用DesignSurface、DesignerHost等设计时服务,可构建类似Visual Studio的拖拽式表单设计器。控件属性通过PropertyGrid暴露,布局及扩展信息序列化为XML,运行时再通过反射动态创建控件、绑定事件与数据,从而实现表单的灵活配置与即时生效。这一方案不

weixin_34122604

实现一个小型编译程序.zip

该项目实现了一个小型编译程序,包含词法分析、语法分析等功能,支持对赋值语句、条件语句和布尔表达式的解析。通过状态栈与符号栈进行自底向上语法分析,生成四元式和汇编代码,并提供了测试用例验证程序正确性与鲁

社恐患者

c#自定义Attribute获取接口实现示例代码

本篇文章将深入探讨如何在C#中自定义Attribute并获取接口的实现。

weixin_38621312

Java获取kettle转换的结果集

Java获取kettle的结果集

Nadou_
评论 6
收藏 已收藏
分享
返回顶部
faib920
.NET Framework 17,748 成员 24,324 内容