using System;
using System.Collections.Generic;
class Program
{
static void Main(string[] args)
{
var testItems = new List<TestItem>();
var t1 = new TestItem("デバイス1");
t1.AddMeasured(new Measured("電圧", "V", 1));
t1.AddMeasured(new Measured("電流", "mA", 100));
testItems.Add(t1);
var t2 = new TestItem("デバイス2");
t2.AddMeasured(new Measured("電圧", "V", 2));
t2.AddMeasured(new Measured("電流", "mA", 200));
testItems.Add(t2);
var t3 = new TestItem("デバイス3");
t3.AddMeasured(new Measured("電圧", "V", 3));
t3.AddMeasured(new Measured("電流", "mA", 300));
testItems.Add(t3);
foreach (var item in testItems)
{
item.Print();
}
}
}
public class Measured
{
public Measured(string name, string unit, double value)
{
this.Name = name; this.Unit = unit; this.Value = value;
}
public string Name { get; set; }
public string Unit { get; set; }
public double Value { get; set; }
public override string ToString()
{
return string.Format("{0}: {1}{2}", Name, Value, Unit);
}
}
public class TestItem
{
private List<Measured> _MeasuredList = new List<Measured>();
public string Name { get; set; }
public List<Measured> MeasuredList => _MeasuredList;
public TestItem(string name)
{
this.Name = name;
}
public void AddMeasured(Measured m)
{
MeasuredList.Add(m);
}
public void Print()
{
Console.WriteLine("[{0}]", Name);
foreach (var m in MeasuredList)
{
Console.WriteLine("\t{0}", m);
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKCmNsYXNzIFByb2dyYW0KewogICAgc3RhdGljIHZvaWQgTWFpbihzdHJpbmdbXSBhcmdzKQogICAgewogICAgICAgIHZhciB0ZXN0SXRlbXMgPSBuZXcgTGlzdDxUZXN0SXRlbT4oKTsKCiAgICAgICAgdmFyIHQxID0gbmV3IFRlc3RJdGVtKCLjg4fjg5DjgqTjgrkxIik7CiAgICAgICAgdDEuQWRkTWVhc3VyZWQobmV3IE1lYXN1cmVkKCLpm7vlnKciLCAiViIsIDEpKTsKICAgICAgICB0MS5BZGRNZWFzdXJlZChuZXcgTWVhc3VyZWQoIumbu+a1gSIsICJtQSIsIDEwMCkpOwogICAgICAgIHRlc3RJdGVtcy5BZGQodDEpOwoKICAgICAgICB2YXIgdDIgPSBuZXcgVGVzdEl0ZW0oIuODh+ODkOOCpOOCuTIiKTsKICAgICAgICB0Mi5BZGRNZWFzdXJlZChuZXcgTWVhc3VyZWQoIumbu+WcpyIsICJWIiwgMikpOwogICAgICAgIHQyLkFkZE1lYXN1cmVkKG5ldyBNZWFzdXJlZCgi6Zu75rWBIiwgIm1BIiwgMjAwKSk7CiAgICAgICAgdGVzdEl0ZW1zLkFkZCh0Mik7CgogICAgICAgIHZhciB0MyA9IG5ldyBUZXN0SXRlbSgi44OH44OQ44Kk44K5MyIpOwogICAgICAgIHQzLkFkZE1lYXN1cmVkKG5ldyBNZWFzdXJlZCgi6Zu75ZynIiwgIlYiLCAzKSk7CiAgICAgICAgdDMuQWRkTWVhc3VyZWQobmV3IE1lYXN1cmVkKCLpm7vmtYEiLCAibUEiLCAzMDApKTsKICAgICAgICB0ZXN0SXRlbXMuQWRkKHQzKTsKCiAgICAgICAgZm9yZWFjaCAodmFyIGl0ZW0gaW4gdGVzdEl0ZW1zKQogICAgICAgIHsKICAgICAgICAgICAgaXRlbS5QcmludCgpOwogICAgICAgIH0KICAgIH0KfQoKcHVibGljIGNsYXNzIE1lYXN1cmVkCnsKICAgIHB1YmxpYyBNZWFzdXJlZChzdHJpbmcgbmFtZSwgc3RyaW5nIHVuaXQsIGRvdWJsZSB2YWx1ZSkKICAgIHsKICAgICAgICB0aGlzLk5hbWUgPSBuYW1lOyB0aGlzLlVuaXQgPSB1bml0OyB0aGlzLlZhbHVlID0gdmFsdWU7CiAgICB9CgogICAgcHVibGljIHN0cmluZyBOYW1lIHsgZ2V0OyBzZXQ7IH0KICAgIHB1YmxpYyBzdHJpbmcgVW5pdCB7IGdldDsgc2V0OyB9CiAgICBwdWJsaWMgZG91YmxlIFZhbHVlIHsgZ2V0OyBzZXQ7IH0KCiAgICBwdWJsaWMgb3ZlcnJpZGUgc3RyaW5nIFRvU3RyaW5nKCkKICAgIHsKICAgICAgICByZXR1cm4gc3RyaW5nLkZvcm1hdCgiezB9OiB7MX17Mn0iLCBOYW1lLCBWYWx1ZSwgVW5pdCk7CiAgICB9Cn0KCnB1YmxpYyBjbGFzcyBUZXN0SXRlbQp7CiAgICBwcml2YXRlIExpc3Q8TWVhc3VyZWQ+IF9NZWFzdXJlZExpc3QgPSBuZXcgTGlzdDxNZWFzdXJlZD4oKTsKCiAgICBwdWJsaWMgc3RyaW5nIE5hbWUgeyBnZXQ7IHNldDsgfQogICAgcHVibGljIExpc3Q8TWVhc3VyZWQ+IE1lYXN1cmVkTGlzdCA9PiBfTWVhc3VyZWRMaXN0OwoKICAgIHB1YmxpYyBUZXN0SXRlbShzdHJpbmcgbmFtZSkKICAgIHsKICAgICAgICB0aGlzLk5hbWUgPSBuYW1lOwogICAgfQoKICAgIHB1YmxpYyB2b2lkIEFkZE1lYXN1cmVkKE1lYXN1cmVkIG0pCiAgICB7CiAgICAgICAgTWVhc3VyZWRMaXN0LkFkZChtKTsKICAgIH0KCiAgICBwdWJsaWMgdm9pZCBQcmludCgpCiAgICB7CiAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoIlt7MH1dIiwgTmFtZSk7CiAgICAgICAgZm9yZWFjaCAodmFyIG0gaW4gTWVhc3VyZWRMaXN0KQogICAgICAgIHsKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoIlx0ezB9IiwgbSk7CiAgICAgICAgfQogICAgfQp9