【发布时间】:2012-06-10 17:50:09
【问题描述】:
ClassA
{
int a;
public int aValue
{
get { return a; }
}
}
ClassB : ClassA
{
int b;
public int bValue
{
get { return b; }
}
}
ClassC : ClassA
{
int c;
public int cValue
{
get { return c; }
}
}
public void getObject(int i)
{
if(i==1)
{
ClassB objB = new ClassB();
objB.aValue = 20;
objB.bValue = 30;
Console.Writeline(objB.aValue);
Console.Writeline(objB.bValue);
}
else
{
ClassC objC = new ClassC();
objC.aValue = 20;
objC.cValue = 40;
Console.Writeline(objC.aValue);
Console.Writeline(objC.cValue);
}
}
相反,我想创建一个返回对象的通用方法:
public T getObject<T>(int i) where T : class
{
if(i==1)
{
ClassB objB = new ClassB();
return objB as T;
}
else
{
ClassC objC = new ClassC();
return objC as T;
}
}
public static void main()
{
Object obj = getObject<Object>(5);
obj.aValue = 20;
obj.bValue = 30;
obj.cValue = 40;
Console.Writeline(obj.aValue);
Console.Writeline(obj.bValue);
Console.Writeline(obj.cValue);
}
在这种情况下 obj = objC 所以 bValue = 30 和 cValue = 40 应该发生。但我不能这样做。 这是我的第三次尝试。我希望我至少这次是清楚的。
【问题讨论】:
-
您似乎应该寻求解决问题的最佳方法,而不是如何将方钉塞入圆孔中。 1) 没有人明白为什么泛型应该在这里发挥作用。 2)你的两个类是否应该有某种通用接口或基类? 3) 如果您尝试设置一个或另一组变量,则必须将其添加到确定返回哪个类的相同逻辑中,那么为什么首先要有这些类?
-
这不是泛型的用途,我建议你重新阅读一些关于泛型的教程。
-
这是我的第三次尝试。我希望至少这次我清楚了。