【发布时间】:2010-11-02 03:39:51
【问题描述】:
我想实例化一个类型的对象,该类型将在运行时确定。我还需要对该类型执行显式强制转换。
类似这样的:
static void castTest(myEnum val)
{
//Call a native function that returns a pointer to a structure
IntPtr = someNativeFunction(..params..);
//determine the type of the structure based on the enum value
Type structType = getTypeFromEnum(val);
structType myStruct = (structType)Marshal.PtrToStructure(IntPtr, structType);
}
这显然不是有效的代码,但我希望它传达了我正在尝试做的事情的本质。我实际使用的方法必须对约 35 种不同类型执行编组操作。我还有其他几种方法需要对同一组类型执行类似的操作。因此,我想将类型确定逻辑与这些方法隔离开来,这样我只需要编写一次,从而使方法保持干净和可读。
我必须承认自己是一个设计新手。任何人都可以提出解决这个问题的好方法吗?我怀疑可能存在我不知道的适当设计模式。
【问题讨论】:
-
也许msdn.microsoft.com/en-us/library/system.activator.aspx可以帮助你?它对于实例化您只在运行时才知道类型的对象通常很有用。它可以通过常规反射来完成,但它有点复杂。我对你的设计没有任何想法,所以我不会回答。
标签: c# .net design-patterns runtime