2

私はこれにかなり慣れていないので、ご容赦ください。

いくつかの int とユーザー定義オブジェクトのコレクションの 3 つのプロパティを持つクラスがあります。

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 クラスの 3 番目のプロパティを作成するにはどうすればよいでしょうか。

答えよりも多くのことを読んだり、学んだり、理解したりするためのオンラインリソースを探していますが、どちらも大歓迎です。

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

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 に答える
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 に答える
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 に答える