c# - 如何根据某些条件返回不同的类对象?
问题描述
我有根据某些条件创建类对象的方法,并且只想返回满足条件的对象。在返回方法中,我需要调用该对象的类方法
我可以用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;
}
}
在返回的方法中,我将根据返回的类对象调用它的方法。所以,我只想返回一个对象,而不是 in Tuple
、object
或dynamic
type 。
解决方案
您应该阅读一些有关工厂模式的信息。
很快,你应该这样做:
- 为您的经理创建通用接口IManager (SIPManager, ...)
一些将返回类实例的方法(实现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();
}
}
推荐阅读
- flutter - 模糊图像,文字覆盖在颤动中
- elasticsearch - 统计所有文档中指向特定字段的总字数
- typescript - Hyperledger TypeError: Class extends value undefined is not a function or null
- java - 如何隐藏数据透视表中的特定列而不是工作表?
- c# - 使用 XGraphics 时如何解决“无法从字符串 [] 转换为字符串”错误
- cakephp - CakePHP 3 基于会话配置显示会话超时时间
- android - Android:缩放像图像一样的视图?
- fortran - 使用 MPI 通信可移植 Fortran 数据类型的正确方法
- python - NameError:名称“bo5”未定义
- reactjs - 无法证明 React-bootstrap 中的 NavItems