如何根据某些条件 return 不同的 class 对象?

How to return different class object depending on some condition?

我有根据某些条件创建 class 对象的方法,并且只想 return 满足条件的对象。在 return 方法中,我需要调用该对象的 class 方法

我可以使用 objectdynamicTuple 但是我们如何使用反射或其他方法来 return 只有一个对象?

public dynamic GetInvokeType(string id)
{
    log.Info("GetInvokeType(): " + id);

    if (id.ToLower() == "cm")
    {
        BCMSDashboardManager b = new BCMSDashboardManager();
        return b;

    }
    else
    {
        SIPManager s = new SIPManager();                
        return s;

    }
}

在 returned 方法中,我将根据 returned class 对象调用它的方法。所以,我只想 return 一个对象,而不是 Tupleobjectdynamic 类型。

你应该阅读一些关于 factory pattern 的内容。

很快,你应该这样做:

  • 为您的管理器(SIPManager,...)创建通用接口 IManager
  • 一些方法将 return class 的实例(实现 IManager 接口)

    // Common interface with desired methods
    public interface IManager
    {
        void Manage();
    }
    public class BCMSDashboardManager : IManager
    {
        public void Manage()
        {
            Console.WriteLine("BCMSDashboardManager");
        }
    }
    public class SIPManager : IManager
    {
        public void Manage()
        {
            Console.WriteLine("SIPManager");
        }
    }
    

现在您可以创建工厂方法,它 returns 特定 class

的实例
public IManager GetInvokeType(string id)
{
    switch (id.ToUpperInvariant())
    {
        case "CM":
            return new BCMSDashboardManager();
        default:
            return new SIPManager();
    }
}