草庐IT

Reflection

全部标签

c# - 使用 Lambda 表达式获取方法名称

我正在尝试使用lambda表达式获取类型上的方法名称。我正在使用WindowsIdentityFoundation,需要定义访问策略,其中类型名称和命名空间作为资源,方法名称作为操作。这是一个例子。这是我将从中获取类型名称和方法名称的类型:namespaceMy.OrderEntry{publicclassOrder{publicvoidAddItem(stringitemNumber,intquantity){}}}这就是我想通过DSL定义访问策略的方式:ForResource().Performing(o=>o.AddItem).AllowUsersHaving(newClaim(

c# - 如何获取类型成员的源文件名和行号?

考虑到调试数据文件可用(PDB)并通过使用System.Reflection或其他类似框架(例如Mono.Cecil),如何以编程方式检索源文件名和声明类型或类型成员的行号。例如,假设您已将此文件编译成程序集:C:\MyProject\Foo.cs1:publicclassFoo2:{3:publicstringSayHello()4:{5:return"Hello";6:}7:}如何做类似的事情:MethodInfomethodInfo=typeof(Foo).GetMethod("SayHello");stringsourceFileName=methodInfo.GetSourc

c# - IsAssignableFrom 和 GetInterface 之间有什么区别?

在.Net中使用反射,有什么区别:if(foo.IsAssignableFrom(typeof(IBar)))和if(foo.GetInterface(typeof(IBar).FullName)!=null)哪个更合适,为什么?什么时候一个或另一个会失败? 最佳答案 如果您只想查看一个类型是否实现了给定的接口(interface),两者都可以,尽管GetInterface()可能更快,因为IsAssignableFrom()比GetInterface()进行更多的内部检查。检查Type.GetInterfaces()的结果可能会更

c# - 任何人都知道一种快速获取枚举值自定义属性的方法吗?

这可能最好用一个例子来说明。我有一个带有属性的枚举:publicenumMyEnum{[CustomInfo("Thisisacustomattrib")]None=0,[CustomInfo("Thisisanotherattrib")]ValueA,[CustomInfo("Thishasanextraflag",AllowSomething=true)]ValueB,}我想从实例中获取这些属性:publicCustomInfoAttributeGetInfo(MyEnumenumInput){TypetypeOfEnum=enumInput.GetType();//thiswil

C#:通过反射访问继承的私有(private)实例成员

我是C#反射方面的绝对新手。我想使用反射来访问类中的所有私有(private)字段,包括继承的那些。我已成功访问所有私有(private)字段(继承的字段除外),以及所有公共(public)和protected继承字段。但是,我无法访问私有(private)的、继承的字段。以下示例说明:classA{privatestringa;publicstringc;protectedstringd;}classB:A{privatestringb;}classtest{publicstaticvoidMain(string[]Args){Bb=newB();Typet;t=b.GetType(

c# - 为什么开放泛型的基类型不开放?

考虑下面的一段代码:publicclassA{}publicclassB:A{}在这种情况下:vara=typeof(A).GenericTypeArguments.Length;a的值为0,这并不奇怪。然而,这对我来说有点出乎意料:varb=typeof(B).BaseType.GenericTypeArguments.Length;其中b的值为1。因此它使用不存在的类型名称“T”关闭,并且仅对其执行GetGenericTypeDefinition使其再次打开。这是为什么? 最佳答案 Soitisclosedusinganon-e

c# - 是否可以在运行时获取类摘要?

在C#中是否可以在运行时获取类摘要?我想通过反射获取类摘要,然后将其写入控制台。我所说的类总结是指类定义之前的总结注释,如下所示://////somedescription///classSomeClass{}我不知道编译代码后这些注释是否可用,但如果可用,也许有一种方法可以在代码中获取它们。在此先感谢您的帮助。 最佳答案 我曾经搞砸过这个,并使用了这个家伙的解决方案。工作得很好:http://jimblackler.net/blog/?p=49 关于c#-是否可以在运行时获取类摘要?,

c# - 通过 COM 对象的反射获取属性名称

如何在C#中通过COM对象的反射读出所有属性名称?如果我知道名称,我就知道如何获得该属性(property)。comObject.GetType().InvokeMember("PropertyName",System.Reflection.BindingFlags.GetProperty,null,comObject,null);但是什么时候我想转储所有属性呢?PropertyInfo[]properties=t.GetProperties();这种方式不适用于Com对象。如果我执行GetMembers(),我会得到这些成员:Name:GetLifetimeServiceName:I

c# - 获取依赖程序集?

有没有办法获取依赖于给定程序集的所有程序集?伪:Assemblya=GetAssembly();vardependants=a.GetDependants(); 最佳答案 如果您希望从当前应用程序域中找到依赖程序集,您可以使用类似下面定义的GetDependentAssemblies函数:privateIEnumerableGetDependentAssemblies(AssemblyanalyzedAssembly){returnAppDomain.CurrentDomain.GetAssemblies().Where(a=>Ge

c# - 从 PropertyInfo 获取 DisplayAttribute 属性

classSomeModel{[Display(Name="QuantityRequired")]publicintQty{get;set;}[Display(Name="CostperItem")]publicintCost{get;set;}}我试图将模型映射到{PropertyName,DisplayName}对列表中,但我遇到了困难。varproperties=typeof(SomeModel).GetProperties().Select(p=>new{p.Name,p.GetCustomAttributes(typeof(DisplayAttribute),false).S