我有一个方法,可以根据某些条件创建类对象,并且只想返回满足条件的对象。在return方法中,我需要调用该对象的类方法
我可以使用object
,dynamic
或Tuple
进行操作,但是如何使用反射或其他方法仅返回一个对象呢?
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;
}
}
在返回的方法中,我将基于返回的类对象调用其方法。因此,我只想返回一个对象,而不是Tuple
,object
或dynamic
类型的对象。
答案 0 :(得分:2)
您应该阅读一些有关factory pattern的信息。
不久,您应该执行以下操作:
一些方法将返回类的实例(实现 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();
}
}