teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2018/02/17 11:18

投稿

Chironian
Chironian

スコア23274

answer CHANGED
@@ -4,4 +4,18 @@
4
4
 
5
5
  > public string s ="";
6
6
 
7
- 因みに、このsはフィールドです。プロパティではありません。
7
+ 因みに、このsはフィールドです。プロパティではありません。
8
+
9
+ ---
10
+ 【質問の追記への回答】
11
+ 見落としてました。getReverseTest<T>というジェネリクスだったのですね。
12
+ Tがメンバsを持っている旨指定しないとダメな筈ですが、そのような直接の指定はできません。
13
+ Tの条件は[where節で指定](http://ufcpp.net/study/csharp/sp2_generics.html#where)します。
14
+ whereにはインタフェースを指定できます。
15
+
16
+ そこで、s をプロパティとして持つインターフェースとして定義し、Testをそのインターフェースから派生します。その際、s をプロパティへ変更する必要があります。
17
+ その上で、getReverseTest<T>関数のwhere節で指定すれば良い筈です。
18
+
19
+ 結構手間がかかります。逆に、もしジェネリクスでなくても良いならば、下記で行けると思いますが、ダメだったらすいません。
20
+
21
+ > string getReverseTest(Stack<Test> tests){