草庐IT

反射面

全部标签

c# - 在 C# 中使用反射创建具有字符串值的未知枚举实例

当我在运行时拥有枚举的System.Type并检查了BaseType是否为System.Enum时,我在计算如何准确创建枚举实例时遇到了问题,我的值是一个与项目匹配的int值在神秘的枚举中。到目前为止,我的代码只是上面描述的逻辑,如下所示。if(Type.GetType(type)!=null){if(Type.GetType(type).BaseType.ToString()=="System.Enum"){return???;}}在过去使用枚举时,我总是在代码时知道我正在尝试解析哪个枚举,但在这种情况下我很困惑,并且运气不好以谷歌友好的方式阐明我的问题......我通常会这样做像(

c# - 序列化 bool ?错误反射(reflect)类型

我有一个类似的类[Serializable]publicclassMyClass{[XmlAttribute]publicboolmyBool{get;set;}}但是当xml中不存在属性时,这会将bool的值序列化为false。当属性不在xml中时,我希望该属性为null。所以我试过了[Serializable]publicclassMyClass{[XmlAttribute]publicbool?myBool{get;set;}}但是随后序列化器出错Typet=Type.GetType("Assembly.NameSpace.MyClass");XmlSerializermySer

c# - 是否可以将反射与 linq to entity 一起使用?

我试图通过创建一个扩展方法来一般地处理过滤来稍微清理我的代码。这是我要清理的代码。varqueryResult=(fromrindc.Retailersselectr);if(!string.IsNullOrEmpty(firstName))queryResult=queryResult.Where(ex=>SqlFunctions.PatIndex(firstName.Trim(),ex.FirstName.Trim())>0);if(!string.IsNullOrEmpty(lastName))queryResult=queryResult.Where(ex=>SqlFuncti

c# - NancyFX 立即反射(reflect)静态内容的变化

在ASP.NET中,每当我从VS2012以Debug模式运行我的服务器时,我对静态内容(js、css等)所做的任何更改都会在保存时立即反射(reflect)出来。在NancyFX中,我每次更改静态内容时都需要重新启动服务器。我假设这是因为每次运行服务器时VS都需要将静态内容复制到输出目录。有没有办法在保存时立即反射(reflect)对静态内容所做的更改?这是我的静态内容配置publicclassMainBootstrapper:DefaultNancyBootstrapper{protectedoverridevoidConfigureConventions(NancyConventi

c# - 使用反射调用属性的方法

我想做的是使用反射调用属性的方法。我有原始控件(一个ComboBox)、属性的PropertyInfo(ComboBox.Items)和方法的名称(ComboBox.Items.Add)。我已经尝试使用下面的代码来获取、更改、设置,但它不起作用,因为Items没有setter。PropertyInfop=controlType.GetProperty(propertyName);//getstheproperty('Items')MethodInfom=p.PropertyType.GetMethod(methodName);//getsthemethod('Items.Add')ob

c# - 使用具有 "params"参数的反射调用函数 (MethodBase)

我有两个函数的MethodBases:publicstaticintAdd(paramsint[]parameters){/*...*/}publicstaticintAdd(inta,intb){/*...*/}我有一个通过我创建的类调用MethodBases的函数:MethodBaseMethod;objectTarget;publicobjectcall(paramsobject[]input){returnMethod.Invoke(Target,input);}现在如果我AddTwoMethod.call(5,4);它工作正常。如果我使用AddMethod.call(5,4)

c# - 如何通过反射获取集合中包含的类型

在我的代码的某些部分,我传递了一个T类型的对象集合。我不知道我将通过哪个具体集合,除了它实现IEnumerable。在运行时,我需要找出T是哪种类型(例如System.Double、System.String等...)。有什么办法可以查出来吗?更新:我或许应该更清楚地说明我工作的环境(Linq提供程序)。我的函数有一个像下面这样的签名,我在其中获取集合的类型作为参数:stringGetSymbolForType(TypecollectionType){}有什么方法可以从collectionType获取包含的对象类型吗? 最佳答案 来

c# - 生成动态方法来设置结构的字段而不是使用反射

假设我有以下代码更新struct的字段使用反射。由于结构实例被复制到DynamicUpdate方法,itneedstobeboxedtoanobjectbeforebeingpassed.structPerson{publicintid;}classTest{staticvoidMain(){objectperson=RuntimeHelpers.GetObjectValue(newPerson());DynamicUpdate(person);Console.WriteLine(((Person)person).id);//print10}privatestaticvoidDynam

c# - 使用反射创建通用委托(delegate)

我有以下代码:classProgram{staticvoidMain(string[]args){newProgram().Run();}publicvoidRun(){//worksFunc>static_delegate=newFunc>(SomeMethod);MethodInfomi=this.GetType().GetMethod("SomeMethod").MakeGenericMethod(newType[]{typeof(String)});//throwsArgumentException:ErrorbindingtotargetmethodFunc>reflecti

C# 使用 Dynamic 关键字通过字符串访问属性而无需反射

我想写类似下面的东西://Iwillpassinanumberof"properties"specifiedasstringsthatIwantmodifiedstring[]properties=new[]{"AllowEdit","AllowDelete"};//CastingthecomponentI'musingtoadynamicobjectofsomesort?dynamicd=myGridComponent;//Iterateoverthestringsandsetthepropertiesforeach(varsinproperties){//d.s=true;////