c# - 动态确定不同类的函数返回类型?

标签 c#

public <return_type> getclass(string company)
{
    switch (company)
    {
        case "cmp1": Classcmp1 temp = new Classcmp1(); return temp ;
        case "cmp2": Classcmp2 temp = new Classcmp2(); return temp ;
        case "cmp3": Classcmp3 temp = new Classcmp3(); return temp ; 
    }
}

如果classcmp1、classcmp2、classcmp3是三个public类,这个函数的返回类型应该是什么?如何动态确定?

最佳答案

你总是可以返回一个对象,因为所有的类都继承自对象:

public object getclass(string Company)
{
    switch (Company)
    {
        case "cmp1": classcmp1 temp = new classcmp1(); return temp ;
        case "cmp2": classcmp2 temp = new classcmp2(); return temp ;
        case "cmp3": classcmp3 temp = new classcmp3(); return temp ; 
    }
}

否则您可以构建一个类,您的三个类将从该类继承:

public class classcmp { }
public class classcmp1 : classcmp {}
public class classcmp2 : classcmp {}
public class classcmp3 : classcmp {}

public classcmp getclass(string Company)
{
    switch (Company)
    {
        case "cmp1": classcmp1 temp = new classcmp1(); return temp ;
        case "cmp2": classcmp2 temp = new classcmp2(); return temp ;
        case "cmp3": classcmp3 temp = new classcmp3(); return temp ; 
    }
}

否则,您可以构建一个界面:

public interface Iclasscmp { }
public class classcmp1 : Iclasscmp {}
public class classcmp2 : Iclasscmp {}
public class classcmp3 : Iclasscmp {}

public Iclasscmp getclass(string Company)
{
    switch (Company)
    {
        case "cmp1": classcmp1 temp = new classcmp1(); return temp ;
        case "cmp2": classcmp2 temp = new classcmp2(); return temp ;
        case "cmp3": classcmp3 temp = new classcmp3(); return temp ; 
    }
}

您所做的选择将影响程序的架构。由于没有更多关于您将需要的类的使用信息,因此很难为您提供更多帮助。

关于c# - 动态确定不同类的函数返回类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20680306/

相关文章:

c# - 重复作业和注入(inject)依赖

c# - 由于支持字段,EF-Core 代码首先抛出错误的问题

c# - Entity Framework 4.1 - Code First - 在解析 DbUpdateConcurrencyException 时无法更新 nullabe DateTime 值

c# - 如何获取数据表的最后 5 行?

命令行/脚本/解释环境中的 C# 或 Java?

c# - Visual Studio - 我可以查看旧版本项目的代码吗?

c# - .NET Core Xunit - IActionResult' 不包含 'StatusCode' 的定义

C# DataContract 序列化,如何反序列化到已经存在的实例

c# - 如何在表达式树中实例化和初始化动态对象?

c# - 如何使用嵌套类从特定的Model转换为ViewModel,反之亦然?