private Contracts.IGeneratedItem CreateEntityFromContract(Type type, Common.ItemType itemType) { type.CheckArgument(nameof(type)); var baseItfc = GetPersistenceBaseContract(type); var contractHelper = new ContractHelper(type); var result = new Models.GeneratedItem(Common.UnitType.Logic, itemType) { FullName = CreateEntityFullNameFromInterface(type), FileExtension = StaticLiterals.CSharpFileExtension, }; result.SubFilePath = $"{result.FullName}{result.FileExtension}"; CreateEntityAttributes(type, result.Source); result.Add($"partial class {contractHelper.EntityName} : {type.FullName}"); result.Add("{"); result.AddRange(CreatePartialStaticConstrutor(contractHelper.EntityName)); result.AddRange(CreatePartialConstrutor("public", contractHelper.EntityName)); foreach (var item in ContractHelper.GetEntityProperties(type).Where(p => CanCreateProperty(type, p.Name))) { var codeLines = new List <string>(CreateProperty(item)); AfterCreateProperty(type, item, codeLines); result.AddRange(codeLines); } result.AddRange(CreateCopyProperties(type)); result.AddRange(CreateEquals(type)); result.AddRange(CreateGetHashCode(type)); result.AddRange(CreateFactoryMethods(type, baseItfc != null)); result.Add("}"); result.EnvelopeWithANamespace(CreateNameSpace(type), "using System;"); result.FormatCSharpCode(); return(result); }