/// <summary> /// 文字列型をSquareCollection型に変換します。 /// </summary> public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { var str = value as string; if (str != null) { return(SquareCollection.Parse(str)); } return(base.ConvertFrom(context, culture, value)); }
/// <summary> /// SquareCollectionを文字列から作成します。 /// </summary> /// <remarks> /// 受け入れるフォーマットはToStringが生成したものと同じです。 /// </remarks> public static SquareCollection Parse(string source) { if (source == null) { throw new ArgumentNullException("source"); } var list = source.Split( new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); if (list == null || !list.Any()) { return(new SquareCollection()); } var result = new SquareCollection(); list.Select(_ => Square.Parse(_)) .ForEach(_ => result.Add(_)); return(result); }