private void ReadData <TFileData>(StringReader reader, IFileModel fileModel) { #if DEBUG this.WriteDebugLine(); #endif var yaml = ""; string line; while (!(line = reader.ReadLine()).EndsWith("]]")) { yaml += line + Environment.NewLine; } var desrializer = new DeserializerBuilder().Build(); var fileData = desrializer.Deserialize <TFileData>(yaml); foreach (var prop in typeof(TFileData).GetProperties()) { var fileProp = fileModel.GetType().GetProperty(prop.Name); if (fileProp is null) { #if DEBUG this.WriteDebugLine(message: string.Format( "Missing property {0} from data <{1}> in model <{2}>", prop.Name, typeof(TFileData).Name, fileModel.GetType().Name )); #endif continue; } var value = prop.GetValue(fileData); if (value is string stringValue) { value = stringValue.Trim(); } fileProp.SetValue(fileModel, value); } }
public static string FilePath(this IFileModel fileModel, string subFolder = null, string extension = null) { var path = ConfigurationManager.AppSettings[fileModel.GetType().Name]; if (subFolder != null) { path = Path.Combine(path, subFolder); } var fileName = extension is null ? fileModel.Name : fileModel.Name + "." + extension; return(Path.Combine(path, fileName)); }