2

我对此很陌生,所以请多多包涵。

我有一个具有三个属性的类:几个整数和一组用户定义的对象。

public class Response
{
    public int num1 { get; set; }
    public int num2 { get; set; }
    public Drink[] drinks{ get; set; }
}

我可以使用用户定义的对象来实例化该类,并且一切正常。

Response response = new Response
    {
        num1= 7, num2= 2, drinks= new Drink[] 
        { new Drink{Id=1, Name="Orange"}, new Drink{Id=2, Name="Apple"}}
    };

如何将 Response 类的第三个属性设置为可以使用不同的用户定义对象(例如“Snack”)拥有该类的另一个实例的位置。

寻找一个在线资源来阅读/学习/找出比答案更多的东西,尽管我们将不胜感激。

4

4 回答 4

4

正如亚历克斯所建议的那样,泛型是您描述的问题的解决方案。你可以像这样重新定义你的类:

public class Response<T>
{ 
    public int num1 { get; set; } 
    public int num2 { get; set; } 
    public T[] items{ get; set; } 
} 

...然后像这样声明您的实例:

Response<Drink> drinkResponse = new Response<Drink>
{              
    num1= 7, num2= 2, items = new Drink[] { new Drink{Id=1, Name="Orange"}, new Drink{Id=2, Name="Apple"}}  
};  

Response<Snack> snackResponse = new Response<Snack>  
{              
    num1= 7, num2= 2, items = new Snack[] { new Snack{Id=1, Name="Orange"}, new Snack{Id=2, Name="Apple"}}  
};  
于 2012-10-24T15:18:32.537 回答
1

认为您在这里谈论的是继承,您可以在其中拥有多个共享共同结构的类:

public class BaseResponse
{
    public int num1 { get; set; }
    public int num2 { get; set; }
}

public class DrinkResponse : BaseResponse
{
    public Drink[] drinks { get; set; }
}

public class SnackResponse : BaseResponse
{
    public Snack[] snacks { get; set; }
}

这是 C# 基础知识的极好资源,一旦你掌握了它,我进一步建议你在这里查看高级 C# 4.0 特定的东西。

编辑

为了支持其他人,他们提出了一个很好的观点,我一开始没有想到泛型-这是一篇关于它们用法的精彩文章

于 2012-10-24T15:17:23.067 回答
1

就像 Alex Farber 说的,你可以创建一个 Generic 类。

public class Response<T>
{
    public int num1 { get; set; }
    public int num2 { get; set; }
    public T[] items{ get; set; }
}

有关泛型类的更多信息:http: //msdn.microsoft.com/en-us/library/sz6zd40f (v=vs.80).aspx

于 2012-10-24T15:18:30.880 回答
0
public class Response<T>
{
    public int num1 { get; set; }
    public int num2 { get; set; }
    public T[] food { get; set; }
}

Response<Drink> response = new Response<Drink>
    {
        num1= 7, num2= 2, food = new Drink[] 
        { new Drink{Id=1, Name="Orange"}, new Drink{Id=2, Name="Apple"}}
    };

Response<Snack> response = new Response<Snack>
    {
        num1= 7, num2= 2, food = new Snack[] 
        { new Snack{Id=1, Name="Orange"}, new Snack{Id=2, Name="Apple"}}
    };
于 2012-10-24T15:20:55.270 回答