Я в ситуации, когда хочу создать экземпляр объекта типа, который будет определен во время выполнения. Мне также нужно выполнить явное приведение к этому типу.
Что-то вроде этого:
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 различных типах. У меня есть несколько других методов, которые должны будут сделать что-то подобное с одним и тем же набором типов. Таким образом, я хотел бы выделить логику определения типа из этих методов, так что мне нужно только написать ее один раз, и чтобы методы оставались чистыми и читаемыми.
Я должен признать, что он новичок в дизайне. Может ли кто-нибудь предложить хороший подход к этой проблеме? Я подозреваю, что может быть соответствующий шаблон дизайна, о котором я не знаю.