【c#-EntityType’是变量,但在使用反射时就像类型一样使用】教程文章相关的互联网学习教程文章

使用C#中的反射调用动态方法【代码】

我有一个基于DynamicObject的类,它动态地实现一个接口(通过TryGet *和TryInvoke *).我想调用它使用反射实现的方法.问题是它抛出了一个TargetException(Object与目标类型不匹配). 就像我说的那样,它是动态的,所以它通过一系列连接将调用作为文本转发给另一个程序,然后使用反射调用目标方法.它基本上是一个代理类.方法名称在编译时是已知的(因为接口),但是在外部调用.typeof(ITelescope).GetMethod(Console.ReadLine()).Invoke(prox,...

c# – 如何通过反射调用带参数的泛型方法?【代码】

假设我有一个这样的类,包含带out参数的泛型方法:public class C {public static void M<T>(IEnumerable<T> sequence, out T result){Console.WriteLine("Test");result = default(T);} }从阅读答案到其他几个问题(How to use reflection to call generic Method?和Reflection on a static overloaded method using an out parameter),我想我可以通过反射调用方法,如下所示:// get the method var types = new[] { typeof(IEnumer...

C#反射和实例化 – 有没有办法做Activator.CreateInstance(myType){X = x}?【代码】

我不确定这种代码的术语,但我想知道是否可以在括号后实例化变量,但是在使用反射时. 我有一个从XML文件加载的地图.这是(int X,int Y,string S)的集合,其中X,Y是某个地形的位置,S是表示地形类型的字符串.我有一个字典在字符串和相关类型之间传递;例如,一个键值对可能是“Tree”,typeof(Tree). 当使用反射时,虽然我知道可以用参数进行实例化,但我唯一的方法就是使用Activator.CreateInstance(Type t),即使用空构造函数. 当我对地图进行...

c# – 如何使用反射对Dispose()进行单元测试?【代码】

我想为实现IDisposable的类编写单元测试.该类有许多私有字段,也实现IDisposable.在我的测试中,我想验证当我调用Dispose()时,它正确地在所有IDisposable字段上调用Dispose().基本上,我希望我的单元测试看起来像这样:var o = new ObjectUnderTest(); o.Dispose(); Assert.IsFalse(ObjectHasUndisposedDisposables(o));我正在考虑使用反射来实现这一目标.看起来这是一个相当普遍的要求,但我找不到它的任何例子. 有人试过吗? 编辑 –...

如何使用C#中的反射查找实现泛型抽象类的所有类?【代码】

我有一个看起来像这样的c#类public abstract class Listener<T> where T : Event {public abstract void Handle(T _event); }我将这个类扩展为这样的东西public class SendWelcomeEmail : Listener<UserWasCreated> {public override void Handle(UserWasCreated _event){//...} }我需要使用反射来查找扩展Listener的所有类<>基类. 我尝试了以下内容var listeners = AppDomain.CurrentDomain.GetAssemblies().SelectMany(assembly ...

C#反射属性顺序【代码】

我使用https://stackoverflow.com/a/531388/528131中的代码从基础成功检索对象实例的所有属性,问题是派生类型的属性首先被迭代.由于协议的性质,我首先需要基本属性.x | y | B z | w | AB和A是类,B来自A. x,y,z是来自B的属性,w是来自A的属性 这是A.GetProperties();正在回归我需要这个:w | A x | y | B z |有没有办法按顺序获得字段?解决方法:类型中的字段不是“有序”的.这些方法中项目的排序是一个实现细节,强烈建议不要依赖它们...

C#基础知识之反射【代码】【图】

两个现实中的例子:1、B超:大家体检的时候大概都做过B超吧,B超可以透过肚皮探测到你内脏的生理情况。这是如何做到的呢?B超是B型超声波,它可以透过肚皮通过向你体内发射B型超声波,当超声波遇到内脏壁的时候就会产生一定的“回音”反射,然后把“回音”进行处理就可以显示出内脏的情况了(我不是医生也不是声学专家,不知说得是否准确^_^)。2、地球内部结构:地球的内部结构大体可以分为三层:地壳、地幔和地核。地壳是固体,地...

c# – 如何在编译时检索通用基类的参数? (即不使用反射)【代码】

我想实现一个通用方法来从数据库中检索标头/详细信息数据:public static T RetrieveHeaderDetail<T>where T : Header<???>, new()// Where ??? means "what can I do here?" {// ... }以下是表示文档标题的泛型的定义:public class Header<TDetail> where TDetail : class, new() {public List<TDetail> Details; }以下是一些实例:public class RequestForQuotation : Header<RequestForQuotationDetail> { ... } public class ...

c# – 使用反射和锁定正确地实例化分配给私有静态volatile变量的类【代码】

所以这是一个我想要改进或确认的人为例子. 我正在使用(我/我)BATIS.NET(一个轻量级的ORM /数据映射器框架),我所拥有的是一个类,它为数据库的每个表映射器提供静态引用.它工作得很好,但有很多重复,我认为可能有机会大大简化代码.该类目前看起来像这样:public sealed class MyRepository {private static string _connectionString;private volatile static TableAbcMapper _tableAbcMapper;private volatile static TableXyzMapper...

C#反射调用类的私有方法【图】

void Main() {var type = typeof(StockClass);type.Dump();var fields=type.GetFields(BindingFlags.Instance|BindingFlags.NonPublic).Dump("字段");var members = type.GetMethods().Dump("方法");//调用私有的构造函数,获得实例化对象object obj=type.GetConstructors(BindingFlags.Instance|BindingFlags.NonPublic)[0].Invoke(null);//获得私有方法var method = type.GetMethod("GetStr", BindingFlags.Instance | BindingFla...

C# – 通过反射及其类型获取所有装配

我想要实现的是从解决方案中获取所有程序集的反射,然后是它们的类型,因此我可以使用.NET Core 2.0将它们放在集合[]中. 我能用的是 > AppDomain.CurrentDomain.GetAssemblies(); – 问题是这将获得所有引用和使用的程序集.在我的情况下,我想获得所有引用的程序集,但不是必需的.所以问题是JIT编译正在删除未使用的项目的引用,因此在这种情况下这不起作用.>其他选项是使用Assembly.GetExecutingAssembly().位置获取DLL的位置,然后加载...

c# – 如何使用反射创建或调用抽象类的受保护构造函数?【代码】

我试图使用反射调用或创建抽象类的实例.这可能吗.这是我尝试过的,但是我收到一条错误,上面写着“无法创建抽象类的实例”.Type dynType = myTypes.FirstOrDefault(a => a.Name == "MyAbstractClass"); ConstructorInfo getCons = dynType.GetConstructor(BindingFlags.NonPublic | BindingFlags.Instance, null, new Type[0], null); object dynamicInstance = getCons.Invoke(null);编辑:我可以使用反射访问此抽象类的属性吗?解...

c# – 是否可以直接在XAML中使用反射【代码】

在我的数据库中,我有一个表,其中包含不同的userControls项,其属性为“ClassName”,“AssemblyName”和“NameSpace”,这些都是使用反射初始化实例的必要条件. 我的想法是要从数据库中获取此集合,将集合设置为数据上下文,并将这些用户控件动态加载到tabcontrol中.我可以使用一个“tabItem”来包含它,并在运行时在代码中加载它.如果它可以直接从模板中的XAML完成,我想它会非常方便和花哨. 我一直在谷歌搜索类似的东西,但没有使用代码背...

c# – 使用反射获取字段初始值设定项中使用的ctor参数【代码】

我的程序集有多个类,其中包含以下字段:private static Foo MyFoo = new Foo(typeof(Bar));参数typeof(Bar)对于每个类都不同. 在我的单元测试中,我需要动态提取该参数. 我可以找到所有类,并过滤那些具有静态Foo字段的类.然后我有一个FieldInfo. 但后来我不知道如何得到那个论点的类型?解决方法:查找MethodBodyReader您可以使用它来查看IL并获取那里的构造函数参数的类型. https://github.com/jbevain/mono.reflection/blob/master...

c# – 是否可以通过反射调用私有委托?如果是,那么如何?如果没有那么原因是什么?【代码】

我正在测试Reflection上的Console应用程序来调用其访问修饰符是私有的委托.代码如下所示:public class EventPublisher{private delegate void PrivateDelegate(string message);public delegate void PublicDelegate(string message);}public class PrivateDelegateSubscriber{public void Subscribe(EventPublisher evPub){Type t = typeof(EventPublisher);MemberInfo[] privateDelegate = t.GetMember("PrivateDelegate", Bind...