示例#1
0
        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));
        }