如何根据条件返回不同的类对象?

时间:2019-09-11 04:56:20

标签: c# .net factory-pattern

我有一个方法,可以根据某些条件创建类对象,并且只想返回满足条件的对象。在return方法中,我需要调用该对象的类方法

我可以使用objectdynamicTuple进行操作,但是如何使用反射或其他方法仅返回一个对象呢?

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;

    }
}

在返回的方法中,我将基于返回的类对象调用其方法。因此,我只想返回一个对象,而不是Tupleobjectdynamic类型的对象。

1 个答案:

答案 0 :(得分:2)

您应该阅读一些有关factory pattern的信息。

不久,您应该执行以下操作:

  • 为您的经理(SIPManager,...)创建通用界面 IManager
  • 一些方法将返回类的实例(实现 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");
        }
    }
    

现在您可以创建工厂方法,该方法返回特定类的实例

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