【c# – 使用反射调用泛型方法时,“对象与目标类型不匹配”】教程文章相关的互联网学习教程文章

C#反射从接口获取具体类的静态属性【代码】

我有一个界面:interface IInterface {string Name { get; } }由通用抽象类实现:public class BInterface<T> : IInterface {static BInterface() { // Or anything that would be implementation class specificName = typeof(BInterface<>).GetType().Name; }public static string Name { get; private set; }string IInterface.Name { get { return Name; } } }依次在具体的类中实现:public class CInterface : BInterface<i...

C#-使用反射实例化实现通用接口的类【代码】

我在业务逻辑程序集中具有以下内容:public class BusinessEntity {... }public class Customer : BusinessEntity {... }public interface IEntityManager <T> where T : BusinessEntity {T SaveData(T oData); }public CustomerEntityManager : IEntityManager <Customer> {Customer SaveData(Customer o){...} }由于种种显而易见的原因,我不得不通过反射将我的程序集加载到我的当前项目中,并实例化CustomersEntityManager.想象一...

c#-使用反射在方法调用上获取正确的返回值【代码】

我的类中有以下作为存储库模式的通用方法:public DbSet<T> GetAll<T>() where T : class {return dbContext.Set<T>(); }现在,我想获取数据库中属于实现特定接口(IChangeTrackingEntity)的实体类的所有实体的列表.因此,目前大约有10个符合此要求的特定表/类,但是我不想向这些表添加10个硬编码的调用,因此我想使用反射来代替(可能也是实现该接口将来会发生变化,我也不必记住也要在此处进行更改并使代码相互依赖. 工作,但我不想要的代...

C#-反射-按名称访问自定义属性【代码】

我正在尝试查看给定的方法是否用属性装饰(有问题的属性是NUnit.Framework.TestAttribute),但是无论该属性是什么版本,我都需要能够检查该属性.当前,我在使用反射的项目中具有nunit.framework.dll版本2.6.2,在测试中具有dll版本2.6.0.反射找不到属性. 有什么办法可以做吗bool isTest = method.GetCustomAttributes(typeof(TestAttribute), true).Length > 0;不能访问TestAttribute dll的正确版本? 其中method是MethodInfo类型.解决方...

c#-通过反射通过自定义属性对实体进行Linq排序【代码】

获得了具有Country属性和String属性Name的Customer类.客户还实现IComparable< Country>.像这样:public int CompareTo(Country other) {return string.Compare(this.Name, other.Name); }现在:var custList = new List<Customer>{...};custList.OrderBy(cust => cust.Country).ToList(); //Sorts as charm.如果尝试通过反射排序:var itemProp = typeof(Customer).GetProperty("Country");custList = c.Customers.ToList().OrderB...

(通过反射)检测C#中Enum是否为“标志”类型的策略【代码】

我正在使用反射来读取程序集中的类型(以生成代码).我可以看到应该使用[Flags]属性标记了一些枚举,但是写这些枚举的人忘记了添加此属性. 有没有可靠的方法来检测何时可以将枚举视为“标记”枚举? 目前,我的策略是按降序读取枚举,并检查element(last -1)* 2 == element(last)的值. 在大多数情况下,这很好用,除非我的枚举分别带有0、1和2值(可以是标志也可以不是标志). 编辑: 我想将其检测为标志的枚举示例:public enum EnumIsFlag...

反射用列表c#修剪列表中的所有字符串【代码】

我有一个修剪所有字符串的方法.public static IEnumerable<T> Trim<T>(this IEnumerable<T> collection) {foreach (var item in collection){var stringProperties = item.GetType().GetProperties().Where(p => p.PropertyType == typeof(string));foreach (var stringProperty in stringProperties){var currentValue = (string)stringProperty.GetValue(item, null);if (currentValue != null)stringProperty.SetValue(item, cu...

(C#.Net Core)使用反射从外部程序集实例化类【代码】

我目前正在尝试开发一种在外部项目中使用反射以编程方式运行测试类的方法.这是应该显示我的问题的简化代码块.string pathToDLL = @"C:\Path\To\Test\Project\UnitTests.dll"; IEnumerable<Type> testClasses = assembly.GetExportedTypes(); Type testClass = testClasses.First(); object testClassInstance = assembly.CreateInstance(testClass.FullName); 此代码引发以下异常:'assembly.CreateInstance(testClass.FullName)' ...

c#-EntityType’是变量,但在使用反射时就像类型一样使用【代码】

我需要在DbContext中注册所有实体. 我创建一个扩展以自动注册带有反射的所有实体:public static void RegisterAllEntity<BaseType>(this DbModelBuilder builder, params Assembly[] assmblies){IEnumerable<Type> types = assmblies.SelectMany(x => x.GetExportedTypes()).Where(x => x.IsClass && !x.IsAbstract && x.IsPublic && typeof(BaseType).IsAssignableFrom(x));foreach (Type EntityType in types)builder.Entity<En...

C#反射,将MakeGenericMethod与具有’new()’类型约束的方法一起使用【代码】

我试图按如下方式使用MethodInfo MakeGenericMethod:foreach (var type in types){object output = null;var method = typeof (ContentTypeResolver).GetMethod("TryConstruct");var genmethod = method.MakeGenericMethod(type);var arr = new object[] { from, output };if ((bool)genmethod.Invoke(null, arr))return (IThingy)arr[1];}针对以下通用方法:public static bool TryConstruct<T>(string from, out IThingy result...

C# 反射实现动态加载程序集【代码】

原文:https://blog.csdn.net/pengdayong77/article/details/47622235 在.Net 中,程序集(Assembly)中保存了元数据(MetaData)信息,因此就可以通过分析元数据来获取程序集中的内容,比如类,方法,属性等,这大大方便了在运行时去动态创建实例。 反射提供了封装程序集、模块和类型的对象(Type 类型)。可以使用反射动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问其字段和属性。如果代...

C#反射从入门到放弃(这部分遇到的新东西太多了让人接受不能)【代码】【图】

首先,我们需要知道type,type是类型的类型(笑 官方点的说法是,BCL声明了一个Type抽象类,它被设计用来包含类型的特性,使用这个类的对象(抽象类的对象?这显然是错误的,但是这里用的其实是Type的派生类的对象)能让我们获得程序使用的类型的信息。 得到type有两种方式 方式1:方式2:无需实例对象a直接写 var type1 = typeof(A); 两种方式的得到的type1和type2这两个引用是一样的,因为都是对A这个类获得其type我们能通过type...

c#反射动态创建窗体【代码】

根据窗体的名称动态创建窗体 Assembly assembly = Assembly.GetExecutingAssembly(); // 实例化窗体try{Form form = assembly.CreateInstance(lf.initForm) as Form;this.Invoke(panelSelect_addFormCallBack, form, 1);if(lf.administrative_level=="区县"){Form controlF = new control();this.Invoke(panelControl_addFormCallBack, controlF, 1);}}这里我传入的lf.initForm是一个字符串,表示窗体变量的名称

c#反射

原文链接:https://my.oschina.net/u/2296689/blog/545759void DynamicallyInvokeMembers(Assembly myAssembly) { Type classType = myAssembly.GetType(“Reflected”); PropertyInfo myProperty = classType.GetProperty(“MyProperty”); MethodInfo propGet = myProperty.GetGetMethod(); object reflectedObject = Activator.CreateInstance(classType); propGet.Invoke(reflectedObject, null); MethodInfo myMethod = class...

c# 利用反射获取表主键并设置值【代码】【图】

private void SetTablePrimaryKey<T>(T entity) { PropertyInfo pkProp = typeof(T).GetProperties().Where(p => p.GetCustomAttributes(typeof(KeyAttribute), false).Length >0).FirstOrDefault(); //主键名称 var keyName = pkProp.Name; //实体类中主键的值 //var keyId = pkProp.GetValue(entity).ToString(); foreach (PropertyInfo p in entity.GetType().GetProperties()) { if (p.Name.ToString() == keyName) { p.SetVal...