草庐IT

reflect.TypeOf

全部标签

c# - 反射(reflection):如何在 C# 7.0 中查找和调​​用本地函数?

我有一个私有(private)静态泛型方法,我想使用反射调用它,但实际上我想将它“捆绑”到另一个方法中。C#7.0支持本地函数,因此这绝对是可能的。你会说“你为什么不直接调用它呢?”但我正在使用它来获得以强类型方式使用对象和System.Type的能力,因此我需要动态调用它。如果我拥有这段代码,它就已经可以工作了,因为它是自己的私有(private)静态泛型方法。privatestaticvoidHandleResponse(objectdata,TypeasType){varapplication=typeof(Program);application.GetMethod(nameo

c# - 为什么 typeof(System.Enum).IsEnum = false?

据我们所知System.Enum是所有枚举的基础,但我想知道为什么反射说它不是枚举本身?Console.WriteLine(typeof(System.Enum).IsEnum)//saysitisfalse我无法理解其中的逻辑,所以System.Enum不是枚举,但是从它派生的所有东西都是枚举?当我看到msdn时,我第二次震惊了。这是一个类publicabstractclassEnum:ValueType,IComparable,IFormattable,IConvertible所以Enum是一个类,但是它是值类型(派生自特殊的ValueType类,它将枚举作为值类型)并且是所有枚举

c# - 反射(reflection)使用 out 参数的静态重载方法

我在通过反射调用带有out参数的重载静态方法时遇到一些问题,希望得到一些指示。我希望动态创建一个类型,如System.Int32或System.Decimal,然后调用静态TryParse(string,outx)方法。下面的代码有两个问题:t.GetMethod("TryParse",newType[]{typeof(string),t})未能返回我期望的MethodInfomi.Invoke(null,newobject[]{value.ToString(),concreteInstance})似乎成功但未设置输出参数concreteInstance到解析后的值交织到这个函数中,您

c# - ServiceController status 没有正确反射(reflect)实际的服务状态

如果我的服务正在启动或停止,我会使用此代码运行powershell脚本。Timertimer1=newTimer();ServiceControllersc=newServiceController("MyService");protectedoverridevoidOnStart(string[]args){timer1.Elapsed+=newElapsedEventHandler(OnElapsedTime);timer1.Interval=10000;timer1.Enabled=true;}privatevoidOnElapsedTime(objectsource,Elaps

c# - 如何将 .net Reflection 与 T4 一起使用?

我有一个包含文本模板的C#项目。我希望此模板根据项目中的C#类的反射(reflect)生成一些SQL。如何使用T4访问当前项目的内容?是否有可能,如果可以,反射是否可用,或者它是否只能访问随后必须解析的原始源?提前致谢! 最佳答案 Howdoesoneaccessthecurrentproject'scontentsusingT4?一种方法是使用EnvDTECOM组件。谷歌搜索T4和EnvDTE应该会带回大量示例。Isitpossible,andifso,isReflectionavailable,orisitaccesstojus

c# - 为什么 typeA == typeB 比 type == typeof(Type B) 慢?

我最近一直在优化/对一些代码进行基准测试并遇到了这个方法:publicvoidSomeMethod(TypemessageType){if(messageType==typeof(BroadcastMessage)){//...}elseif(messageType==typeof(DirectMessage)){//...}elseif(messageType==typeof(ClientListRequest)){//...}}这是从其他地方的性能关键循环调用的,所以我很自然地假设所有这些typeof(...)调用都增加了不必要的开销(我知道这是一种微优化)并且可以移动到类中的私有

c# - Autofac 没有找到带有 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder' 的构造函数

Noneoftheconstructorsfoundwith'Autofac.Core.Activators.Reflection.DefaultConstructorFinder'ontype'LMS.Services.Security.EncryptionService'canbeinvokedwiththeavailableservicesandparameters:Cannotresolveparameter'LMS.Models.SecuritySettingssecuritySettings'ofconstructor'Void.ctor(LMS.Models.Securi

c# - C# 的 typeof 运算符(或其在 MSIL 中的任何表示形式)的效率

我知道过早优化是万恶之母。但是,我正在定义一个通用方法,该方法使用反射来检索其通用类型的元数据,并且想知道是否像以下代码片段那样多次调用typeof(T):privatestaticDictionaryelementProperties;privatestaticTMakeElement(SqlDataReaderreader)whereT:class,new(){PropertyInfo[]properties;if(elementProperties.ContainsKey(typeof(T)))properties=elementProperties[typeof(T)];els

c# - 通用嵌套类型中的 typeof(T)

我完全不明白为什么下面的行为会这样。我什至不知道这是隐藏还是其他原因造成的。classA{publicclassB:A{publicvoidb(){Console.WriteLine(typeof(T).ToString());}publicclassC:B{publicvoidc(){Console.WriteLine(typeof(T).ToString());}}publicclassD:A.B{publicvoidd(){Console.WriteLine(typeof(T).ToString());}}}}classProgram{staticvoidMain(string[

c# - 获取程序集中的类型(错误 : System. Reflection.ReflectionTypeLoadException)

我收到类型为“异常详细信息:System.Reflection.ReflectionTypeLoadException:无法加载一种或多种请求的类型。检索LoaderExceptions属性以获取更多信息。”的异常。使用以下代码:publicIEnumerableFindClassesOfType(TypeassignTypeFrom,IEnumerableassemblies,boolonlyConcreteClasses=true){foreach(varainassemblies){foreach(vartina.GetTypes())我需要获取每个程序集中定义的类型,但似乎无法