2017-11-25 5 views
1

IListから特定のデータにアクセスしようとしています。IListの特定のアイテムにアクセス<T>タイプ

public static void export(IList<T> data){ 
var test = data[1]; 
var x = test.day; 
} 

これは私がVaRのテストの値と型として得るものです: test value and type

タイプは、コードがT. どのようにすることができますようにそれを見て私のモデルのタイプに設定されていても「日」の値にアクセスしますか?

これは私の最初の投稿ですので、何か不具合があればごめんなさい、事前に感謝します。

大切にしてください。

+0

将来、imgurにリンクするのではなく、組み込みの機能を使用してイメージを追加して、インラインで質問に表示してください。 –

答えて

2

はどのようにTが実際にday性質を持っていることを知っていますか? Tは何でもかまいません。あなたはすべてのworkingHoursDbXlsのオブジェクトを格納するためのリストを期待している場合は、私はこの方法は、一般的な作りではないことをお勧め:

また
public static void export(IList<workingHoursDbXls> data) 
{ 
    var test = data[1]; 
    var x = test.day; 
} 

、あなたはどのタイプTがあり、気にしないと言うことで、いくつかの制約を指定することができます限り、それはday性質があるとして:あなたはそれを実装することを言って、あなたのworkingHoursDbXlsクラスの宣言を更新する必要があります

public interface IHaveADay 
{ 
    string day { get; } 
} 

public static void export<T>(IList<T> data) where T : IHaveADay 
{ 
    var test = data[1]; 
    var x = test.day; 
} 

IHaveADay

public class workingHoursDbXls : IHaveADay 
{ 
    ... 
} 
+0

良い答えですが、2番目のアプローチが働くためには、 'workingHoursDbXls'クラスを' class workingHoursDbXls:IHaveADay'のように変更しなければならないことに注意してください。 –

+0

ありがとうございます! –

-1

dayプロパティにアクセスすると、メソッドはそのプロパティを持つオブジェクトでのみ動作し、Tをそれを公開するインターフェイスに制限する場合にのみ機能します。

public static void export<T>(IList<T> data) where T: workingHoursDbXls 
{ 
    var test = data[1]; 
    var x = test.day; 
} 
+0

ダウン有権者ではありませんが、ここには制約はありません(コンパイルされません)。定義によれば、 'export'は' T'の中では一般的ではありません(しかしおそらくクラスがあります。その場合、制約はそこに行きます)。 OPが 'export (..)'を 'export(...) 'としてミスしなかった場合、エラーをコピーしました。 – pinkfloydx33

関連する問題