Tag: reflection

创建一个新的AnonymousType实例

我正在尝试创建一个AnonymousType实例,如下所示: new { Channel = g.Key.Channel, Comment = g.Key.Comment, Count = g.Count() } 在黑暗中,.NET创建一个带有构造函数的AnonymousType,它带有三个参数: String, String, Int32 。 为了创建这个匿名类型的新实例,我做: object[] args = new object[3]; args[0] = “arg1”; args[1] = “arg2”; args[2] = 200; (T)Activator.CreateInstance(typeof(T), args); .NET转发我: 附加信息:在 f__AnonymousType2`3 [[System.String,…],[System.String,…],[System.Int32,…]]’中找不到构造函数。 我不知道为什么CreateInstance试图调用像[[],[],[]]这样的构造函数! 范围 真正的范围有点难以解释: 我创建了一个Linq提供程序。 此提供程序将Linq语句翻译为我的服务器方法。 当我收到json信息时,我需要将此信息投影到用户指定的类型。 在这种情况下: var enumerable = UIContainer.UIController.Instance.getDigitalInputs() .GroupBy(di => new { Channel […]

如何从generics定义和generics参数中获取generics类型?

在C#中,我如何从generics定义和generics参数中构造generics类型 var genericDefinition = typeof(List); var genericArgument = typeof(string); // How can I get the Type instance representing List from the 2 variables above? 在我的用例中,generics参数是动态解析的。 这可能在C#中吗? 提前致谢。

使用reflection获取属性引用

var a = new obj(); var property = a.GetType().GetProperty(“DB”).GetValue(a,null) as testObject; 这是否意味着变量property持有对对象a中相同对象的引用,或者是否创建了具有相同值的新testObject? 如果这意味着创建一个新对象,那么我如何使用reflection获得对该属性/支持字段的引用?

如何使用reflection将Int16值设置为Nullable 属性?

我需要这样做: – MyClass.cs using System; using System.Collections.Generic; using System.Text; namespace set_property__Enum_To_Nullable_Enum { public enum MyEnum : short { One, Two, Three } public class MyClass { public string MyStringProperty { get; set; } public MyEnum? MyEnumProperty { get; set; } public void ShowAll(string message) { Console.WriteLine(message); Console.WriteLine(“String = ” + MyStringProperty); Console.WriteLine(“Enum = ” + […]

获取程序集限定Visual Studio中类的名称

我正在为一些专门的自定义域逻辑编写一个自定义的reflection库,该库将使用XML配置文件,这些文件将在运行时动态解析System.Type对象。 但是,在编写XML配置文件时,编写类型会有点麻烦,因为它们需要是Type.GetType()的完全限定程序集名称才能解决它们。 有没有办法在Visual Studio中找到对象的AssemblyQualifiedName而无需编写程序将它们打印到文件或标准或类似的东西?

创建使用动态生成类型的表达式树

我有一个完全初始化的MethodBuilder和EnumBuilder 。 MethodBuilder指向动态程序集的入口点。 它有以下签名: public static int Main (string [] args) {…} 程序集生成代码工作正常,我可以使用Reflection.Emit来测试它。 我想要从表达式树中保存目标代码,而不是发出IL。 这应该: 声明一个枚举变量 为它赋值 写入控制台 读取暂停控制台 将枚举值作为Int32返回 表达树: // Intention: Declare string [] args in the expression scope. var arguments = Expression.Parameter(typeof(string []), “args”); // Intention: var code = default(MyDynamicEnum); var code = Expression.Variable(builderEnum, “code”); // Intention: code = MyDynamicEnum.Two; var assign […]

如果方法的最后一个参数用’params’标记,reflection是否会暴露?

在方法定义上使用reflection我想知道原始方法是否在最后一个参数上使用’params’定义。 那么我能否发现原始定义是否是这样的…… public void MyMethod(int x, params object[] args); ……而不是…… public void MyMethod(int x, object[] args); 我的代码有一个参数列表,并使用reflection来调用任意方法。 如果它标有’params’,那么我想将额外的参数打包成一个对象[]并调用该方法。 如果参数没有用’params’标记,那么我会指出错误。 所以我想提供与C#相同的语义。 但是我找不到任何指示如何使用reflection发现这个的文档。

unit testing时使用reflection或属性?

这是我有点担心的课程。 我的目标是对地址列表进行unit testing: public class LabelPrinter { private readonly IEnumerable _addresses; public LabelPrinter(IEnumerable addresses) { _addresses = addresses; } public Document Create() { // … Generate PDF, etc … } } 什么是最好的: 使用reflection检查私有财产,或 既然最初的IEnumerable可以从外部修改,那么做一个公共的getter并测试它呢?

Dotfuscator中的Reflection Bug的解决方法?

问候所有, 我正在调用Type.GetProperties(),但是在运行Dotfuscator之后,它返回零项,之前它返回的值大于零。 public class Test { public int Number { get; set; } public void ShowInfo() { Type type = this.GetType(); PropertyInfo[] props = type.GetProperties(); Console.WriteLine(“type [” + type.Name + “] props count: ” + props.Length); } } 如果我在Dotfuscator中重命名排除“Number”属性,那么它可以正常工作,但不会。 但是,我不可能对我的项目中的所有属性执行此操作,因为这会导致可能的错误。 这种方法有没有变通方法? 甚至可以使用其他“免费”混淆应用程序? 我已经尝试在他们的网站上查找提交错误,但我只使用社区版,所以似乎没有那么多的支持。

Type.GetProperties什么都不返回

请考虑以下代码: public class MyClass { public MyClass(Type optionsClassType) { //A PropertyInfo[0] is returned here var test1 = optionsClassType.GetProperties(); //Even using typeof var test2 = typeof(MyClassOptions).GetProperties(); //Or BindingFlags var test3 = typeof(MyClassOptions) .GetProperties(BindingFlags.DeclaredOnly | BindingFlags.Public); } } public class MyClassOptions { public int MyProperty { get; set; } } 我无法获得有关MyClassOptions PropertyInfo[] , Type.GetProperties总是返回一个空数组。 首先我认为这是Xamarin.iOS中的一个框架错误,但我在另一个针对相同框架的项目中测试了相同的代码并且它工作得很好。 有人知道可能的原因吗? 编辑 […]