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/