トップページ > プログラム > 2016年09月18日 > FLMBUfED0

書き込み順位&時間帯一覧

22 位/178 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000010000000000100013



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん (ワッチョイ 83dc-U9f6)
デフォルトの名無しさん (ワッチョイ 83dc-wJFc)
デフォルトの名無しさん (ワッチョイ 83dc-W8Ns)
ふらっと C#,C♯,C#(初心者用) Part124 [無断転載禁止]©2ch.net

書き込みレス一覧

ふらっと C#,C♯,C#(初心者用) Part124 [無断転載禁止]©2ch.net
679 :デフォルトの名無しさん (ワッチョイ 83dc-U9f6)[sage]:2016/09/18(日) 08:58:10.66 ID:FLMBUfED0
>>677
メンバに順序は無いので、何らかの手段で順序情報を付加してやる必要がある。
その上で、リフレクションを使って動的に値をセットする。
たとえばカスタム属性を使って以下のようにする。(動くかどうかは知らん)
public class OrderAttribute : Attribute {
 public Order(int value) { this.Value = value; }
 public int Value { get; private set; }
}
public class ListValue {
 [Order(0)] public string Col1 {get; set;}
 [Order(1)] public string Col2 {get; set;}
}
public static class TsvLoader {
 public static IEnumerable<ListValue> LoadFromFile<T>(string filename) =>
  File.ReadLines(filename)
   .Select(line => line.Split(‘¥t’))
   .Select(DeserializeRow);
 public static T DeserializeRow<T> where T : class, new() (IEnumerable<string> row) {
  var propvals = typeof(T).GetProperties()
   .OrderBy(prop => ((OrderAttribute)p.GetAttribute(typeof(OrderAttribute))).Value)
   .Zip(row, (prop, val) => new { Property = prop, Value = val });
  var obj = new T();
  foreach (var propval in propvals) { propval.Property.SetValue(obj, propval.Value); }
  return obj;
 }
}
こんなことするより素直に>>678の方がいいと思うけど
ふらっと C#,C♯,C#(初心者用) Part124 [無断転載禁止]©2ch.net
685 :デフォルトの名無しさん (ワッチョイ 83dc-wJFc)[sage]:2016/09/18(日) 19:21:44.92 ID:FLMBUfED0
>>683
UWP使えば
ふらっと C#,C♯,C#(初心者用) Part124 [無断転載禁止]©2ch.net
688 :デフォルトの名無しさん (ワッチョイ 83dc-W8Ns)[sage]:2016/09/18(日) 23:11:20.92 ID:FLMBUfED0
>>687
共変で間違ってないよ
https://msdn.microsoft.com/en-us/library/mt654055.aspx


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。