我正在尝试在我的程序中创建一个通用例程,它将为我实例化对象。实际负责调用 new Object() 的例程位于必须实例化的工厂的不同程序集中。
namespace ExternalLib
{
class Object1Factory
{
public Object1 getObject1()
//...
}
class Object2Factory
// Same implementation as Object1Factory
}
我正在尝试为我的应用程序提供一个例程,该例程将允许我调用适当的例程来为我“新建”对象。
namespace MyApp
{
class Program
{
static void Main()
//...
static Object getNewObject(string typeName)
{
//This is where I have problems
}
}
}
我可以访问外部库和我的程序的源代码,尽管重新编写架构的成本太高。
我尝试过的:我最初的想法是在工厂和/或工厂例程上使用自定义属性并使用反射来获取方法,然后调用该方法。我最初使用签名private static T getNew<T>()
并尝试在类型参数上使用 switch 语句,但实现起来getNewObject(string typeName)
会更容易。工厂具有相同的构造函数签名,但没有继承链接。
总而言之:创建对象的例程在另一个程序集中的工厂中,我如何自动调用这些例程以根据类型获取对象?