質問編集履歴
5
文章修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -130,6 +130,8 @@
|
|
130
130
|
|
131
131
|
public T GetEnumTypeFromString<T>(T t, string str) where T : struct {
|
132
132
|
|
133
|
+
// enumの種類の確認用
|
134
|
+
|
133
135
|
Type tempType = t.GetType();
|
134
136
|
|
135
137
|
Debug.Log(tempType);
|
4
コードの改善
test
CHANGED
File without changes
|
test
CHANGED
@@ -100,7 +100,7 @@
|
|
100
100
|
|
101
101
|
string day = "friday";
|
102
102
|
|
103
|
-
dayType = GetEnumTypeFromString
|
103
|
+
dayType = GetEnumTypeFromString(dayType, day);
|
104
104
|
|
105
105
|
|
106
106
|
|
@@ -114,7 +114,7 @@
|
|
114
114
|
|
115
115
|
for (int i = 0; i < strArray.Length; i++) {
|
116
116
|
|
117
|
-
timeTypeArray[i] = GetEnumTypeFromString
|
117
|
+
timeTypeArray[i] = GetEnumTypeFromString(timeType, strArray[i]);
|
118
118
|
|
119
119
|
}
|
120
120
|
|
@@ -128,7 +128,7 @@
|
|
128
128
|
|
129
129
|
/// </summary>
|
130
130
|
|
131
|
-
public T GetEnumTypeFromString<T>(
|
131
|
+
public T GetEnumTypeFromString<T>(T t, string str) where T : struct {
|
132
132
|
|
133
133
|
Type tempType = t.GetType();
|
134
134
|
|
@@ -238,6 +238,4 @@
|
|
238
238
|
|
239
239
|
こちらをどのように修正したらよいのか、わからずにおります。
|
240
240
|
|
241
|
-
またこちらのメソッドの呼び出し側も型引数の指定が必要なのですが、さすがにそれを省略する方法はないものでしょうか。
|
242
|
-
|
243
241
|
何卒よろしくお願い致します。
|
3
文章修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -88,14 +88,8 @@
|
|
88
88
|
|
89
89
|
|
90
90
|
|
91
|
-
public TIME_TYPE timeType;
|
92
|
-
|
93
91
|
public DAY_TYPE dayType;
|
94
92
|
|
95
|
-
public SERIES_TYPE seriesType;
|
96
|
-
|
97
|
-
|
98
|
-
|
99
93
|
public TIME_TYPE[] timeTypeArray;
|
100
94
|
|
101
95
|
|
@@ -244,6 +238,6 @@
|
|
244
238
|
|
245
239
|
こちらをどのように修正したらよいのか、わからずにおります。
|
246
240
|
|
247
|
-
またこちらのメソッドの呼び出し側も
|
241
|
+
またこちらのメソッドの呼び出し側も型引数の指定が必要なのですが、さすがにそれを省略する方法はないものでしょうか。
|
248
242
|
|
249
243
|
何卒よろしくお願い致します。
|
2
コードの改善
test
CHANGED
File without changes
|
test
CHANGED
@@ -88,19 +88,25 @@
|
|
88
88
|
|
89
89
|
|
90
90
|
|
91
|
+
public TIME_TYPE timeType;
|
92
|
+
|
91
93
|
public DAY_TYPE dayType;
|
92
94
|
|
95
|
+
public SERIES_TYPE seriesType;
|
96
|
+
|
97
|
+
|
98
|
+
|
93
99
|
public TIME_TYPE[] timeTypeArray;
|
94
100
|
|
95
101
|
|
96
102
|
|
97
103
|
void Start() {
|
98
104
|
|
99
|
-
|
105
|
+
// 文字列を引数で渡した種類のEnumに変換
|
100
106
|
|
101
107
|
string day = "friday";
|
102
108
|
|
103
|
-
dayType =
|
109
|
+
dayType = GetEnumTypeFromString<DAY_TYPE>(dayType, day);
|
104
110
|
|
105
111
|
|
106
112
|
|
@@ -114,7 +120,7 @@
|
|
114
120
|
|
115
121
|
for (int i = 0; i < strArray.Length; i++) {
|
116
122
|
|
117
|
-
timeTypeArray[i] =
|
123
|
+
timeTypeArray[i] = GetEnumTypeFromString<TIME_TYPE>(timeType, strArray[i]);
|
118
124
|
|
119
125
|
}
|
120
126
|
|
@@ -124,13 +130,11 @@
|
|
124
130
|
|
125
131
|
/// <summary>
|
126
132
|
|
127
|
-
/// stringをジェネリクスでもらったタイプのEnumに
|
133
|
+
/// stringをジェネリクスでもらったタイプのEnumにする
|
128
134
|
|
129
135
|
/// </summary>
|
130
136
|
|
131
|
-
public
|
137
|
+
public T GetEnumTypeFromString<T>(Enum t, string str) where T : struct {
|
132
|
-
|
133
|
-
// 引数の確認用
|
134
138
|
|
135
139
|
Type tempType = t.GetType();
|
136
140
|
|
@@ -142,19 +146,15 @@
|
|
142
146
|
|
143
147
|
if (!type.IsEnum) {
|
144
148
|
|
145
|
-
// enumでなければ処理しない
|
146
|
-
|
147
149
|
Debug.Log("Not Enum");
|
148
150
|
|
149
151
|
} else {
|
150
152
|
|
151
|
-
// 引数のenumの種類によって分岐。ここを1つの処理に統一したいです。
|
152
|
-
|
153
153
|
if (type == typeof(TIME_TYPE)) {
|
154
154
|
|
155
155
|
TIME_TYPE temp = (TIME_TYPE)Enum.Parse(typeof(TIME_TYPE), str, true);
|
156
156
|
|
157
|
-
return temp;
|
157
|
+
return (T)(object)temp;
|
158
158
|
|
159
159
|
}
|
160
160
|
|
@@ -162,7 +162,7 @@
|
|
162
162
|
|
163
163
|
DAY_TYPE temp = (DAY_TYPE)Enum.Parse(typeof(DAY_TYPE), str, true);
|
164
164
|
|
165
|
-
return temp;
|
165
|
+
return (T)(object)temp;
|
166
166
|
|
167
167
|
}
|
168
168
|
|
@@ -170,18 +170,20 @@
|
|
170
170
|
|
171
171
|
SERIES_TYPE temp = (SERIES_TYPE)Enum.Parse(typeof(SERIES_TYPE), str, true);
|
172
172
|
|
173
|
-
return temp;
|
173
|
+
return (T)(object)temp;
|
174
174
|
|
175
175
|
}
|
176
176
|
|
177
177
|
}
|
178
178
|
|
179
|
-
return TIME_TYPE.AFTERNOON;
|
179
|
+
return (T)(object)TIME_TYPE.AFTERNOON;
|
180
180
|
|
181
181
|
}
|
182
182
|
|
183
183
|
}
|
184
184
|
|
185
|
+
|
186
|
+
|
185
187
|
```
|
186
188
|
|
187
189
|
|
@@ -218,7 +220,7 @@
|
|
218
220
|
|
219
221
|
TIME_TYPE temp = (TIME_TYPE)Enum.Parse(typeof(TIME_TYPE), str, true);
|
220
222
|
|
221
|
-
return temp;
|
223
|
+
return (T)(object)temp;
|
222
224
|
|
223
225
|
}
|
224
226
|
|
@@ -226,7 +228,7 @@
|
|
226
228
|
|
227
229
|
DAY_TYPE temp = (DAY_TYPE)Enum.Parse(typeof(DAY_TYPE), str, true);
|
228
230
|
|
229
|
-
return temp;
|
231
|
+
return (T)(object)temp;
|
230
232
|
|
231
233
|
}
|
232
234
|
|
@@ -234,7 +236,7 @@
|
|
234
236
|
|
235
237
|
SERIES_TYPE temp = (SERIES_TYPE)Enum.Parse(typeof(SERIES_TYPE), str, true);
|
236
238
|
|
237
|
-
return temp;
|
239
|
+
return (T)(object)temp;
|
238
240
|
|
239
241
|
}
|
240
242
|
|
1
書式の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -12,6 +12,8 @@
|
|
12
12
|
|
13
13
|
ジェネリクスを使って、分岐を作らずに引数よりenumを特定した1つの処理を作ることはできるのでしょうか。
|
14
14
|
|
15
|
+
またメソッドの呼び出しもキャストが必要なため、こちらも屈託です。
|
16
|
+
|
15
17
|
ご教示いただけますようお願い申し上げます。
|
16
18
|
|
17
19
|
|
@@ -240,4 +242,6 @@
|
|
240
242
|
|
241
243
|
こちらをどのように修正したらよいのか、わからずにおります。
|
242
244
|
|
245
|
+
またこちらのメソッドの呼び出し側もキャストが必要なため、Enum.Parseを使う場合とあまり処理が変わらず、そこも修正したいです。
|
246
|
+
|
243
247
|
何卒よろしくお願い致します。
|