草庐IT

Reflection

全部标签

c# - Reflection.Emit 与 CodeDOM

使用Reflection.Emit库与CodeDOM在运行时动态生成代码有哪些优缺点?我正在尝试根据运行时以XML形式提供的元数据在系统中生成一些(相对复杂的)动态类。我将生成扩展应用程序集中现有类的类,实现额外的接口(interface),添加方法,并覆盖虚拟和抽象成员。我想确保在深入实现之前选择了合适的技术。有关这些不同的代码生成技术有何不同的任何信息都会有所帮助。此外,任何有关简化或流线化使用任一API的开源库的信息也很有用。 最佳答案 我认为关于CodeDOM和Reflection.Emit的关键点如下:CodeDom生成C

c# - Reflection.Emit 与 CodeDOM

使用Reflection.Emit库与CodeDOM在运行时动态生成代码有哪些优缺点?我正在尝试根据运行时以XML形式提供的元数据在系统中生成一些(相对复杂的)动态类。我将生成扩展应用程序集中现有类的类,实现额外的接口(interface),添加方法,并覆盖虚拟和抽象成员。我想确保在深入实现之前选择了合适的技术。有关这些不同的代码生成技术有何不同的任何信息都会有所帮助。此外,任何有关简化或流线化使用任一API的开源库的信息也很有用。 最佳答案 我认为关于CodeDOM和Reflection.Emit的关键点如下:CodeDom生成C

c# - 如何在C#中制作一个简单的动态代理

我想构建一个动态代理对象来为对象添加某些功能。基本上我想接收一个对象,用一个看起来与我得到的原始对象相同的对象包装它,并拦截所有调用。classWrapper:DynamicProxy//dynamicproxyisnotareallclass,butiguesssomethinglikethisexists...{publicstaticTWrap(Tobj){return(T)newWrapper(obj);}publicoverrideobjectInterceptCall(MethodInfoinfo,object[]args){//dostuff}}澄清一下,我想做一些类似于

c# - 如何在C#中制作一个简单的动态代理

我想构建一个动态代理对象来为对象添加某些功能。基本上我想接收一个对象,用一个看起来与我得到的原始对象相同的对象包装它,并拦截所有调用。classWrapper:DynamicProxy//dynamicproxyisnotareallclass,butiguesssomethinglikethisexists...{publicstaticTWrap(Tobj){return(T)newWrapper(obj);}publicoverrideobjectInterceptCall(MethodInfoinfo,object[]args){//dostuff}}澄清一下,我想做一些类似于

c# - 如何使用给定的 Type 对象调用泛型方法?

这个问题在这里已经有了答案:HowdoIusereflectiontocallagenericmethod?(8个答案)关闭8年前。我想用给定的类型对象调用我的泛型方法。voidFoo(Typet){MyGenericMethod();}显然行不通。我怎样才能让它发挥作用?

c# - 如何使用给定的 Type 对象调用泛型方法?

这个问题在这里已经有了答案:HowdoIusereflectiontocallagenericmethod?(8个答案)关闭8年前。我想用给定的类型对象调用我的泛型方法。voidFoo(Typet){MyGenericMethod();}显然行不通。我怎样才能让它发挥作用?

c# - 我可以通过类型获取 C# 委托(delegate)的签名吗?

如果您有委托(delegate)的类型信息,是否有使用反射获取委托(delegate)参数列表的直接方法?举个例子,如果我声明一个委托(delegate)类型如下delegatedoubleFooDelegate(stringparam,boolcondition);然后按如下方式获取该委托(delegate)类型的类型信息TypedelegateType=typeof(FooDelegate);是否可以从该类型信息对象中检索返回类型(double)和参数列表({string,bool})? 最佳答案 MethodInfometho

c# - 我可以通过类型获取 C# 委托(delegate)的签名吗?

如果您有委托(delegate)的类型信息,是否有使用反射获取委托(delegate)参数列表的直接方法?举个例子,如果我声明一个委托(delegate)类型如下delegatedoubleFooDelegate(stringparam,boolcondition);然后按如下方式获取该委托(delegate)类型的类型信息TypedelegateType=typeof(FooDelegate);是否可以从该类型信息对象中检索返回类型(double)和参数列表({string,bool})? 最佳答案 MethodInfometho

c# - 使用程序集中的 Web 应用程序版本号 (ASP.NET/C#)

如何在引用的程序集中获取调用Web应用程序的版本号?我试过使用System.Reflection.Assembly.GetCallingAssembly().GetName()但它只给我动态编译的程序集(返回版本号0.0.0.0)。更新:在我的例子中,我需要一个不需要引用回Web应用程序程序集中的类的解决方案。Jason在下面的回答(标记为已接受)满足此要求-此处提交的许多其他回答没有。 最佳答案 这是我使用的一些代码,支持从Web或非Web应用程序获取应用程序的“主”程序集,然后您可以使用GetName().Version获取版本

c# - 使用程序集中的 Web 应用程序版本号 (ASP.NET/C#)

如何在引用的程序集中获取调用Web应用程序的版本号?我试过使用System.Reflection.Assembly.GetCallingAssembly().GetName()但它只给我动态编译的程序集(返回版本号0.0.0.0)。更新:在我的例子中,我需要一个不需要引用回Web应用程序程序集中的类的解决方案。Jason在下面的回答(标记为已接受)满足此要求-此处提交的许多其他回答没有。 最佳答案 这是我使用的一些代码,支持从Web或非Web应用程序获取应用程序的“主”程序集,然后您可以使用GetName().Version获取版本