草庐IT

反射率

全部标签

c# - 避免用户代码调用 C# 中的反射

我正在为我目前正在教授的类(class)实现一个自动“评估器”。总体思路是每个学生都提供一个实现了一些算法的DLL。我的评估员使用反射加载所有这些DLL,找到学生实现并在锦标赛中评估它们。所有这些算法都是黑盒优化器,实现了以下接口(interface)publicinterfaceIContinuousMetaheuristic{//...SomeunimportantpropertiesVectorEvaluate(Functionfunction,intmaxEvaluations,...);}Function的类定义(至少是相关部分)是:publicclassFunction:{

c# - 具有覆盖属性和反射的奇怪效果

我在.NET/Reflection中遇到了一个奇怪的行为,找不到任何解决方案/解释:classA{publicvirtualstringTestString{get;set;}}classB:A{publicoverridestringTestString{get{return"x";}}}由于属性只是函数对(get_PropName()、set_PropName()),因此仅覆盖“get”部分应该保留“set”部分在基类中。如果您尝试实例化B类并为TestString赋值,就会发生这种情况,它使用A类的实现。但是如果我在反射中查看类B的实例化对象会发生什么:PropertyInfop

c# - ASP.NET MVC 如何知道如何填充您的模型以提供 Controller 的操作?它涉及反射(reflection)吗?

定义了一个模型publicclassHomeModel{[Required][Display(Name="FirstName")]publicstringFirstName{get;set;}[Required][Display(Name="Surname")]publicstringSurname{get;set;}}并具有以下ControllerpublicclassHomeController:Controller{[HttpPost]publicActionResultIndex(HomeModelmodel){returnView(model);}publicActionRe

c# - "+"在成员 c# 之后反射(reflect)的全名和 '*' 是什么意思#

我目前正在处理C#中的反射。之后:Assembly.LoadFile(@"C:\ProgramFiles\dotnet\shared\Microsoft.NETCore.App\2.0.7\System.Numerics.Vectors.dll").GetTypes()我发现了这个:[System.Numerics.Matrix4x4]、[System.Numerics.Matrix4x4+CanonicalBasis]、[System.Numerics.Matrix4x4+VectorBasis](有来自“System.Numerics.Vectors.dll”的反射类型)我知道Ma

c# - 如何通过反射获取委托(delegate)类型的返回类型?

我正在为个人项目做反射繁重的工作,我需要通过委托(delegate)的Type对象访问委托(delegate)的返回类型。这是一个小元,所以这是一个例子。Typetype=typeof(Func);//????//UsereflectiontocometothefollowingexpectedresultTyperesult=typeof(Baz);我该怎么做?我不会将该类型的任何实例转换为Delegate。 最佳答案 一种方法是获取表示委托(delegate)类型的Invoke方法的MethodInfo,然后检索该方法的返回类型

c# - 我试图理解我反射(reflect)过的微软的 Do​​ubleUtil.AreClose() 代码

如果您反射(reflection)WindowsBase.dll>MS.Internal.DoubleUtil.AreClose(...),您将获得以下代码:publicstaticboolAreClose(doublevalue1,doublevalue2){if(value1==value2){returntrue;}doublenum2=((Math.Abs(value1)+Math.Abs(value2))+10.0)*2.2204460492503131E-16;doublenum=value1-value2;return((-num2num));}我试图理解两件不同的事情:

c# - 如何避免动态加载已使用反射加载的程序集?

我在循环中使用Assembly.LoadFile(assemblyFilePath)加载程序集,如果程序集已经加载过一次,我想避免调用Assembly.LoadFile。我是否应该担心为已经加载的DLL重复调用Assembly.LoadFile?谢谢。 最佳答案 不,您不需要担心,因为如果程序集已经加载,则不会再次加载如果您调用Assembly.LoadFile(),那么您可以多次加载同一个程序集,但前提是您每次都从不同的路径加载程序集。您可以使用Assembly.Load()这将只加载一次程序集。您还可以使用在当前应用程序域中查找

c# - 是否可以通过反射调用值类型运算符?

作为C#运算符,例如+、+=、==是可覆盖的。它让我认为它们是某种方法,因此想知道是否有一种方法可以使用反射来调用它们,例如在Int32上。 最佳答案 这个怎么样,它简单、小巧且有效:)publicTAdd(objectx,objecty){return(T)Convert.ChangeType((dynamic)x+(dynamic)y,typeof(T));} 关于c#-是否可以通过反射调用值类型运算符?,我们在StackOverflow上找到一个类似的问题:

c# - 为任何方法创建 Func 或 Action(在 C# 中使用反射)

我的应用程序根据设置动态加载dll来自数据库(文件、类和方法名称)。为了促进、加快和减少反射的使用,我想要一个缓存....遵循使用的想法:MethodInfo.Invoke没有任何表现形式(ReflectionPerformance-CreateDelegate(PropertiesC#))我想翻译对方法的任何调用。我想到了一些可以像这样工作的东西:publicstaticTCreate(Typetype,stringmethodName)//orpublicstaticTCreate(MethodInfoinfo)//touselikethis:varaction=Create>(t

c# - PropertyInfo.GetValue() - 如何在 C# 中使用反射索引通用参数?

这个(缩短的)代码..for(inti=0;i..抛出“TargetParameterCountException:参数计数不匹配”异常。'propertyInfo'的基础类型是一些T的集合。'count'是集合中的项目数。我需要遍历集合并对obj执行操作。感谢您的建议。 最佳答案 反射一次只在一个层面上起作用。您正在尝试对属性进行索引,这是错误的。相反,读取属性的值,以及您返回的对象,即您需要索引的对象。这是一个例子:usingSystem;usingSystem.Collections.Generic;usingSystem.R