Top / .NET備忘録 / 13.App オブジェクト

App オブジェクトを .NET に移植する際には、アセンブリの情報が元になります。
最初に取得した値と次に取得した値が異なっていてはまずいので、Dictioary を作成し、アセンブリ単位に管理することにします。

まず、情報を保持するために AppObject というクラスを作ります。

public class AppObject{
    private Assembly _Asm;
	
    internal AppObject(Assembly asm) {
        _Asm = asm;
    }
}

Global クラスに以下のようなプロパティを作ります。

using System;
using System.Text;
using System.Reflection;
using System.Collections;
using System.Collections.Generic;
using System.Windows.Forms;
using Microsoft.VisualBasic.CompilerServices;

namespace VB6Control
{
    [StandardModule]
    public static class Global
    {
        private static Dictionary<Assembly, AppObject> _AppObjects 
                            = new Dictionary<Assembly, AppObject>();

        public static AppObject App {
            get {
                Assembly asm = Assembly.GetCallingAssembly();
                AppObject appObject;
                if (!_AppObjects.TryGetValue(asm, out appObject)) {
                    appObject = new AppObject(asm);
                    _AppObjects.Add(asm, appObject);
                }
                return appObject;
            }
        }
    }
}

Assembly.GetCallingAssembly() は、プロパティを呼び出したアセンブリを取得します。 それを元に AppObject を作成し、Dictionary に格納し、必要に応じて取り出します。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   最終更新のRSS
Last-modified: 2016-03-07 (月) 11:47:35 (528d)