Как передать строку фабричному методу и создать экземпляр одного из множества подклассов с этим именем - PullRequest
0 голосов
/ 02 августа 2020

Я изучаю шаблон проектирования фабрики и пытаюсь реализовать его в своем проекте. У меня есть пространство имен с базовым классом и системой подклассов с разными значениями членов. Моя программа хочет прочитать загруженный пользователем файл и в зависимости от его имени создать экземпляр соответствующего подкласса.

Я пробовал сделать это, передав имя файла в виде строки моему фабричному методу и создание экземпляра желаемого подкласса с использованием: Activator.CreateInstance

Однако при отладке я получаю ArgumentNullException, и я не совсем уверен, как лучше всего достичь своей цели. Вот мой код:

Если пользователь, например, загружает текстовый файл, я хочу создать экземпляр моего класса TextFile.

public class GameMaker
{
    public BaseFile make(String fileType)
    {
        var gameVersion = Activator.CreateInstance(null, fileType);
        return gameVersion;
        
    }
}
public abstract class BaseFile
{
    
}
class Textfile: BaseFile
{
    
}
...