【C#学习--反射之创建对象、获取类和子类】教程文章相关的互联网学习教程文章

C#-反射:在运行时将事件字段与委托类型的字段区分开【代码】

我的主要问题是:是否有可能在反思中将某种委托类型的字段与事件用作存储字段的字段区分开?问题归结为:FieldInfo类是否包含有关它是否属于事件的信息,如storagefield?我找不到可能说明的任何属性,也找不到custum属性. 在下面的代码中,SomeField和SomeEvent的两个FieldInfo的相关属性都相同.所以我不知道如何根据是否为事件存储字段来对FieldInfo进行排序.using System; using System.Reflection; using System.Runtime.Compiler...

c#-使用stacktrace / stackframe进行反射以获取方法名称和参数【代码】

在写我遇到的问题时其他一些最相关的文章…导致MSDNhttp://msdn.microsoft.com/en-us/library/system.reflection.parameterinfo.aspx 但我无法提取我需要的代码 我刚刚学习了如何使用基于st和sf的辅助方法获取方法名称,如下所示:public void setLogView(View ViewMode){AAdToAppLog();Lview_AH_AutomationLog.Sorting = SortOrder.Ascending;ColumnHeader ColHeadRowNo = new ColumnHeader();ColumnHeader ColHeadFunction = new ...

C#反射SetValue()找不到集合访问器【代码】

我使用反射来更新已对其进行更新并保存到mongodb的对象private void updateSelf(MongoDoc newDoc){Type type = this.GetType();foreach (var i in type.GetProperties()){if (i.GetCustomAttributes(false).Any(x => x is MongoDB.Bson.Serialization.Attributes.BsonIgnoreAttribute)) continue;Object oldValue = i.GetValue(this, null);Object newValue = i.GetValue(newDoc, null);if (!Object.Equals(oldValue, newValue) &&...

C#6.0反射:提取只读自动属性的支持字段的名称【代码】

我有一个序列化机制可以在专用字段上工作,以确定哪些应该序列化,哪些不应该序列化.该方法背后的主要思想是仅序列化数据的“本质”. 例:public class Person {private readonly string _firstName;private readonly string _lastName;public C1(string firstName, string lastName) {_firstName = firstName;_lastName = lastName;}public string FirstName { get { return _firstName; } }public string LastName { get { return ...

c# 反射调用方法、获取设置值、好处和局限性【代码】【图】

/// 1 反射调用实例方法、静态方法、重载方法 选修:调用私有方法 调用泛型方法/// 2 反射字段和属性,分别获取值和设置值/// 3 反射的好处和局限class Program{/// /// 反射的优点: 动态 /// 反射的缺点:/// 1 使用麻烦/// 2 避开编译器检查/// 3 性能问题!!!/// 100w次循环----- 普通方法 24ms/// 反射 9206ms/// 缓存优化,把dll加载和类型获取 只执行一次///...

c#-传递get / set属性作为参数而不进行反射的最佳方法【代码】

有时,在处理数据传输对象(例如从数据库或csv文件中检索到的对象)时,最好编写一些辅助函数来移动数据. 例如:class MyDto {public string Name { get; set; } }class MyBusinessObject {public string Name { get; set;} }我想写一些类似的东西:MyDto source; MyBusinessObject target;var hasChanged = target.Set(source, source => source.Name, target => target.Name); // lamdba expressions, or whatever it takes to make ...

C# 反射(Reflection)

反射指程序可以访问、检测和修改它本身状态或行为的一种能力。 程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。 您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性。 优缺点 优点:1、反射提高了程序的灵活性和扩展性。 2、降低耦合性,提高自适应能力。 3、它允许程序创建和控制任何类的对象,无需提...

如何:在C#中使用反射发射定义自引用类型属性【代码】

如何定义自引用集合属性?我要使用反射类型生成器生成的类型.public class Sample {public Sample(){Items = new List<Sample>();}public List<Sample> Items { get; set; }Public void AddSample(Sample item){items.Add(item);} }我写的代码AppDomain myDomain = AppDomain.CurrentDomain; AssemblyName myAsmName = new AssemblyName("GenericEmit"); AssemblyBuilder myAssembly = myDomain.DefineDynamicAssembly(myAsmName, ...

c#-使用反射在嵌套对象中设置属性【代码】

我正在尝试使用反射在obj1中设置Address1,但我不知道如何获得对正确对象的引用.我不确定如何获取对Address1实例的引用以传递到SetValue()的第一个参数中 第1轮:public class StackOverflowReflectionTest{[Fact]public void SetDeepPropertyUsingReflection(){var breadCrumb = ".Addresses[0].Address1";var obj1 = new Person(){Name = "Eric",Addresses = new List<Address>(){new Address() {Address1 = "123 First Street"}}...

c#-通过反射表示类型Func【代码】

给定此方法签名:void Foo<T>(Func<T, object> expression)是否有可能使用反射来创建Func< dynamic,object>的类型表示.与MakeGenericType一起使用的表达式参数的类型? “显而易见”的方法不是有效的C#语法,因为dynamic既不是类型也不是对象(即typeof(dynamic)无效),因此我无法提出对???有用的任何信息.参数如下:Type fnType = typeof(Func<,>).MakeGenericType(new Type[] { ???, typeof(object) });有趣的是,我可以做到这一点,并...

c#-在网站中使用反射访问AssemblyInfo.cs中的信息【代码】

我创建了一个DLL,它将从AssemblyInfo.cs中收集信息.在类构造函数中,我使用Reflection来获取正在运行的最高级应用程序.public class AppInfo() {public AppInfo(){System.Reflection.Assembly assembly =System.Reflection.Assembly.GetEntryAssembly();if (assembly == null)assembly = System.Reflection.Assembly.GetCallingAssembly();//code to gather needed information} }如果我从给定应用程序MyApp中的任何DLL调用此函数,可...

c#-使用反射从.NET 64位exe调用.NET 32位dll中的方法【代码】

我有一个32位.NET类库,它具有一个简单的公共类和一个简单的公共方法.我有一个使用反射的64位.NET控制台应用程序,我希望加载32位程序集并使用其方法.using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Reflection; using Host.TestLib;namespace test {class Program{static void Main(string[] args){var lib = Assembly.LoadFrom("Simple32bitAssembly.dll");}} }运行此命令时...

c#-用于将类的实例创建到DLL中的反射用法【代码】

我有以下代码:var type = typeof(PluginInterface.iMBDDXPluginInterface); var types = AppDomain.CurrentDomain.GetAssemblies().ToList().SelectMany(s => s.GetTypes()).Where(p => type.IsAssignableFrom(p));Type t = types.ElementAt(0); PluginInterface.iMBDDXPluginInterface instance = Activator.CreateInstance(t) as PluginInterface.iMBDDXPluginInterface; TabPage tp = new TabPage();tp = instance.pluginTabPa...

c#-通过.NET反射在派生类中调用受保护的泛型方法【代码】

最近我正在尝试在WP7应用中执行类似的操作 我有课abstract class A { //this method has an implementation protected void DoSomething<T, TKey>(Func<T, TKey> func) { //impl here } };我想通过派生类中的反射来调用该受保护的方法:public class B : A {void SomeMethod(Type tableType, PropertyInfo keyProperty){ MethodInfo mi = this.GetType().GetMethod("DoSomething", BindingFlags.Instance | BindingFlags.NonPublic...

如何利用C#属性和反射在标记的对象上注入/强制后期绑定?

我喜欢设计模式,但问题是实现起来有些繁琐.例如,装饰一个具有20个成员的对象只是令人讨厌. 因此,我想创建一个漂亮的设计模式库,以将其应用于类(作为基类或属性),以更快,更轻松地实现这些模式. 问题是…我不太确定从哪里开始-因为我大多不熟悉属性和反射. 我想利用属性来标记Singleton(类似于Export标记),Multiton和Decorators …,如果可能的话.但是我什至不知道从哪里开始才能创建一个改变其实例功能的单例属性. 我的有限研究使我相...