Ruft die Klasse anhand des Zeichenfolgenwerts ab

Ich habe eine abstrakte Klasse mit einigen abgeleiteten Klassen

public abstract class MyObject
{
    public string name { get; set; }
    public bool IsObject(string pattern);
    ...
}

public class MyObjectA : MyObject
{
    public string name { get { return "MyObjectA"; } set; }
    public bool IsObject(string pattern) { ... }
    ...
}

public class MyObjectB: MyObject
{
  public string name { get { return "MyObjectB"; } set; }
  public bool IsObject(string pattern) { ... }
  ...
}

Jetzt möchte ich eine Funktion haben, die die spezifische Klasse (MyObjectA / MyObectB) basierend auf einer Zeichenfolge zurückgibt. Das Problem ist, dass ich viele if / else-Klauseln habe, um das zu bekommen:

public MyObject Create(string pattern)
{
    MyObjectA obj = new MyObjectA();
    if(obj.IsObject(pattern)
    {
        return obj;
    }
    else
    {
        MyObjectB objb = new MyObjectB();
        if(objb.IsObject(pattern);
            return objb;
        else
            ...
    }
}

Das sieht einfach schrecklich aus. Was wäre ein besserer Weg, um dies zu tun?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage