【问题标题】:use a type object with strongly typed methods使用具有强类型方法的类型对象
【发布时间】:2012-09-07 00:42:23
【问题描述】:

我什至不确定这是否可能,但这是我面临的问题。

基本上我有一个强类型的方法如下

ConsoleHelper.Start<T>() where T:IService

我想要实现的是使用反射动态加载 T,所以类似于

var type = Assembly.Load("assembly").GetType("type");

然后将该类型与上面定义的强类型方法一起使用。这有可能吗?

【问题讨论】:

  • 您能否分享一个大型代码 sn-p 来展示您将如何处理 var 类型以及 T : IService 所在的通用类 ConsolerHelper.Start() 的一部分?
  • ConsoleHelper 实际上是托管我的 WCF 服务的通用控制台应用程序。目前,对于每个 WCF 服务解决方案,我们都有一个单独的 TestHost 项目,它基本上做同样的事情。因此,我正在寻找一种将这些 TestHost 项目整合到一个项目中的方法,该项目将在运行时使用反射加载 WCF 服务程序集。
  • 为什么不想在一个进程中启动多个主机?
  • 这仅用于开发目的。在 PROD 环境中,我们将这些服务托管为 Windows 服务,但在 DEV 环境中,我们将这些服务托管为控制台应用程序,因此是 TestHost 项目。

标签: c# reflection strong-typing


【解决方案1】:

当然,您可以使用MethodInfo.MakeGenericMethod 来执行此操作。

var startMethod = typeof(ConsoleHelper).GetMethod("Start");

// Equivalent of Start<SomeType>
var typedStartMethod = startMethod.MakeGenericMethod(typeof(SomeType));

【讨论】:

    猜你喜欢
    • 2013-04-16
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多