private IPropertyModel CreateReference(Type type, string masterKey, string idMemberName, string title) { var propertyType = TypeRecognizer.ParseType(type); switch (propertyType) { case PropertyKind.Integer: if (!loader.Masters.ContainsKey(masterKey)) { throw new KeyNotFoundException($"[PwReferenceMember] 属性で指定されたマスターキー \"{masterKey}\" を持つ [PwMaster] 属性のついたメンバーがプロジェクトに含まれていません。"); } return(new ReferenceByIntProperty(loader.Masters[masterKey], idMemberName) { Title = { Value = title } }); case PropertyKind.BasicCollection: if (!loader.Masters.ContainsKey(masterKey)) { throw new KeyNotFoundException($"[PwReferenceMember] 属性で指定されたマスターキー \"{masterKey}\" を持つ [PwMaster] 属性のついたメンバーがプロジェクトに含まれていません。"); } return(new ReferenceByIntCollectionProperty(loader.Masters[masterKey], idMemberName, this) { Title = { Value = title } }); default: throw new InvalidOperationException("ID参照をするプロパティの型は int, int[] 型のみがサポートされます。"); } }
public IPropertyModel Create(Type type, string title) { var propertyType = TypeRecognizer.ParseType(type); if (!type.IsPublic && !type.IsNestedPublic) { throw new ArgumentException($"型 {type.FullName} がパブリックではありませんでした。", nameof(type)); } var model = Create(propertyType, type); model.Title.Value = title; return(model); }
private IPropertyModel CreateMultiLine(Type type, string title) { var propertyType = TypeRecognizer.ParseType(type); switch (propertyType) { case PropertyKind.String: return(new StringProperty(true) { Title = { Value = title } }); default: throw new Exception(); } }