Пример #1
0
        /// <summary>
        /// コンストラクタ。
        /// </summary>
        /// <param name="app">
        /// 対象アセンブリ。
        /// AssemblyProductAttribute 属性と
        /// AssemblyVersionAttribute 属性が定義されている必要がある。
        /// </param>
        /// <param name="baseUri">
        /// アプリ更新情報JSONファイルのベースURI。
        /// </param>
        public AppUpdateChecker(Assembly app, string baseUri)
        {
            ArgumentValidation.IsNotNull(app, nameof(app));
            ArgumentValidation.IsNotNullOrWhiteSpace(baseUri, nameof(baseUri));

            var productAttr =
                app.GetCustomAttribute <AssemblyProductAttribute>() ??
                throw new ArgumentException(
                          nameof(AssemblyProductAttribute) + @" is not defined.",
                          nameof(app));

            if (string.IsNullOrWhiteSpace(productAttr.Product))
            {
                throw new ArgumentException(
                          nameof(AssemblyProductAttribute) + @" is blank.",
                          nameof(app));
            }

            var version =
                app.GetName()?.Version ??
                throw new ArgumentException(
                          @"The version of application is not defined.",
                          nameof(app));

            this.CurrentProduct = productAttr.Product;
            this.CurrentVersion = version;
            this.BaseUri        = baseUri;
        }
Пример #2
0
        /// <summary>
        /// コンストラクタ。
        /// </summary>
        /// <param name="currentProduct">現行プロダクト名。</param>
        /// <param name="currentVersion">現行バージョン。</param>
        /// <param name="baseUri">
        /// アプリ更新情報JSONファイルのベースURI。既定のURIを用いるならば null 。
        /// </param>
        public AppUpdateChecker(
            string currentProduct,
            Version currentVersion,
            string baseUri)
        {
            ArgumentValidation.IsNotNullOrWhiteSpace(currentProduct, nameof(currentProduct));
            ArgumentValidation.IsNotNull(currentVersion, nameof(currentVersion));
            ArgumentValidation.IsNotNullOrWhiteSpace(baseUri, nameof(baseUri));

            this.CurrentProduct = currentProduct;
            this.CurrentVersion = currentVersion;
            this.BaseUri        = baseUri;
        }
Пример #3
0
        /// <summary>
        /// コンストラクタ。
        /// </summary>
        /// <param name="subDirectory">
        /// ベースディレクトリを基準位置とするサブディレクトリパス。
        /// 絶対パスであったり、空白文字のみであってはならない。
        /// 空文字列を指定するとベースディレクトリパスをそのまま用いる。
        /// null を指定するとプロセス名を用いる。
        /// </param>
        /// <param name="baseDirectory">
        /// ベースディレクトリパス。
        /// 空文字列や空白文字のみであってはならない。
        /// 相対パスを指定するとローカルアプリケーションフォルダを基準位置とする。
        /// null を指定するとプロセスの AssemblyCompanyAttribute 属性を利用する。
        /// </param>
        /// <param name="fileName">
        /// ファイル名。
        /// 空文字列や空白文字のみであってはならない。
        /// null を指定すると (typeof(T).FullName + ".config") を用いる。
        /// </param>
        /// <param name="serializer">
        /// シリアライザ。既定のシリアライザを用いるならば null 。
        /// </param>
        public ConfigKeeper(
            string subDirectory            = null,
            string baseDirectory           = null,
            string fileName                = null,
            XmlObjectSerializer serializer = null)
        {
            var dir = new ConfigDirectoryPath(subDirectory, baseDirectory);

            var file = fileName ?? (typeof(T).FullName + @".config");

            ArgumentValidation.IsNotNullOrWhiteSpace(file, nameof(fileName));

            this.Value      = default(T);
            this.FilePath   = Path.Combine(dir.Value, file);
            this.Serializer = serializer ?? (new DataContractJsonSerializer(typeof(T)));
        }