Tag: getcustomattributes

Unity拦截GetCustomAttribute

在此先感谢您的帮助! (是的,底部有一个问题) 我正在使用Unity 3.x Interception来执行AOP之前和之后的数据库连接和事务活动。 数据库拦截器始终是实例化的,并且事务拦截器是基于CustomAttributeMatchingRule的,都是通过InterfaceInterceptor实现的。 我有在TransactionAttribute中设置的属性: [Transaction(IsolationLevel.ReadUncommitted, NoRollbackFor = new[] { typeof(TestException) })] 作为一个例子,我在我的unit testing中使用。 我想在我的TransactionCallHandler类调用方法中访问它们。 我见过这样的例子 var transactionAttribute = input.MethodBase.GetCustomAttribute(false); 是访问它的方法,但我的事务var是null。 我的结论是正在检查拦截代理类的自定义属性而不是原始的具体实例。 我的工作原理是反映一直回到类级别,深入挖掘出被拦截的正确方法,并从那里执行get自定义属性。 var methods = input .Target .GetType() .GetMethods() .Where(m => m.Name == input.MethodBase.Name) .Where(m => m.GetCustomAttribute(false) != null); (还有大约30行代码,以确保我没有访问错误的方法名称,如果方法有重载;因此性能拖延……) 所以,毕竟,我的问题是:我没有正确地执行reflection吗? 我应该报告Unity中的错误吗? 这是我的容器定义: Container = new UnityContainer(); Container.AddNewExtension(); Container.RegisterType( new InterceptionBehavior(), new […]

我如何GetCustomAttributes?

我使用2.0框架尝试了以下代码,然后我得到一个属性,但是当我在紧凑框架上尝试这个时,它总是返回一个空数组。 MSDN文档说它支持,我做错了什么? Test x = new Test(); FieldInfo field_info = x.GetType().GetField(“ArrayShorts”); object[] custom_attributes = field_info.GetCustomAttributes(typeof(MarshalAsAttribute), false); [StructLayout(LayoutKind.Sequential)] public struct Test { [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)] public ushort[] ArrayShorts; }