Tag: reflection

.NET,C#,Reflection:列出字段的字段,字段本身具有字段

在.NET和C#中,假设ClassB有一个ClassA类型的字段。 可以使用方法GetFields轻松列出ClassB的字段。 但是,我还想列出那些本身有字段的ClassB字段的字段。 例如, ClassB的字段x具有字段b , s和i 。 我想(以编程方式)列出这些字段(正如我在以下代码中的评论所建议的那样)。 class ClassA { public byte b ; public short s ; public int i ; } class ClassB { public long l ; public ClassA x ; } class MainClass { public static void Main ( ) { ClassA myAObject = new ClassA () ; ClassB […]

Compact Framework – 如何在没有默认构造函数的情况下动态创建类型?

我正在使用.NET CF 3.5。 我想要创建的类型没有默认构造函数,所以我想将一个字符串传递给重载的构造函数。 我该怎么做呢? 码: Assembly a = Assembly.LoadFrom(“my.dll”); Type t = a.GetType(“type info here”); // All ok so far, assembly loads and I can get my type string s = “Pass me to the constructor of Type t”; MyObj o = Activator.CreateInstance(t); // throws MissMethodException

如何从.NET中的用户类distingush编译器生成的类

我的程序中有一段代码通过检查它们的类型名称中是否包含“DisplayClass”来区分编译器生成的类。 在阅读这个答案后 ,我想我需要一个更好的方法。 如何从.NET中的用户类中删除编译器生成的类?

如何通过reflection调用参数默认值的方法

我需要通过默认值参数调用方法。 它通过此消息具有TargetParameterCountException : Parameter count mismatch var methodName = “MyMethod”; var params = new[] { “Param 1”}; var method = typeof(MyService).GetMethod(methodName, BindingFlags.Instance | BindingFlags.NonPublic); method.Invoke(method.IsStatic ? null : this, params); private void MyMethod(string param1, string param2 = null) { } 为什么? 如何通过reflection参数的默认值来调用此方法?

对F#度量单位的反思

目前已在F#中添加了对reflection的支持,但它不适用于度量类型。 是否可以在F#中使用reflection来测量类型? 我读过这个 。 那是在2008年,但是如果你在ildasm中检查一些像bellow这样的代码,你就看不到任何关于Units of Measure 。 // Learn more about F# at http://fsharp.net [] type m [] type cm let CalculateVelocity(length:float ,time:float) = length / time ildasm输出: .method public static float64 CalculateVelocity(float64 length, float64 time) cil managed { // Code size 5 (0x5) .maxstack 4 IL_0000: nop IL_0001: ldarg.0 IL_0002: ldarg.1 IL_0003: div […]

方法工厂 – 案例与反思

前几天我遇到了一些代码,我想知道这是否是最好的方法。 我们有一个方法,从一些Web表单数据中获取一个字符串,根据传入的字符串对某个对象执行操作。目前,它使用reflection来计算要采取的操作,但我想知道switch语句是否会更好。 例: 编辑:我为Lucerno指出的代表添加了第三个选项 public class ObjectManipulator { private void DoX(object o) { } private void DoY(object o) { } private void DoZ(object o) { } public void DoAction(string action, object o) { switch (action) { case “DoX”: DoX(o); break; case “DoY”: DoY(o); break; case “DoZ”: DoZ(o); break; default: throw new Exception(string.Format( “Cannot locate action:{0}”, […]

使用reflection对COM对象调用方法

我有一个COM对象的实例…它是这样创建的: Type type = TypeDelegator.GetTypeFromProgID(“Broker.Application”); Object application = Activator.CreateInstance(type); 当我尝试调用方法时: type.GetMethod(“RefreshAll”).Invoke(application, null); – > type.GetMethod(“RefreshAll”)返回null 。 当我尝试使用type.GetMethods()获取所有方法时,只有以下方法: GetLifetimeService InitializeLifetimeService CreateObjRef 的ToString 等于 GetHashCode的 的GetType RefreshAll方法在哪里? 我怎么能调用呢?

当一个属性隐藏带有’new’关键字的inheritance成员时,reflection如何告诉我?

如果我有: public class ChildClass : BaseClass { public new virtual string TempProperty { get; set; } } public class BaseClass { public virtual string TempProperty { get; set; } } 如何使用reflection来查看ChildClass是否隐藏了TempProperty的Base实现? 我想在c#和vb.net之间做出不可知的答案

Activator.CreateInstance与私人密封类

我正在尝试新建一个LocalCommand实例,它是System.Data.SqlClient.SqlCommandSet的私有类。 我似乎能够很好地获取类型信息: Assembly sysData = Assembly.Load(“System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”); localCmdType = sysData.GetType(“System.Data.SqlClient.SqlCommandSet+LocalCommand”); 但是当我尝试实例化它时,Activator.CreateInstance会抛出exception: object item = Activator.CreateInstance(localCmdType, new object[] { commandText, parameters, num7, commandType }); System.MissingMethodException:找不到类型为“System.Data.SqlClient.SqlCommandSet + LocalCommand”的构造函数。 构造函数参数匹配我在Reflector中看到的签名。 是新的私有类,内部ctor支持不同的CreateInstance重载或什么?

使用System.Reflection加载ASP.NET 2.0 aspx页面?

我可以使用System.Reflection在另一个独立的aspx页面中加载一个独立的aspx页面吗? 我正在使用ASP.NET 2.0网站项目模型。