クラスで宣言されたアクセス修飾子 internal により、同じアセンブリ内からアクセスできるようになることを私は知っています。
ただし、私の場合、別のアセンブリは Type.GetType を使用して別のアセンブリの内部クラスにアクセスでき、Activator.CreateInstance() を使用してそのオブジェクトを正常に作成することもできます。
別のアセンブリで Type.GetType() を使用して、別のアセンブリの内部クラスにアクセスできることは本当に可能ですか? そうでない場合、何か不足していますか?
追加の詳細: 3 つのアセンブリ/プロジェクトを使用するドメイン駆動設計 (モデルおよびインフラストラクチャ レイヤー) のクラス図を含むリンクを指定します。
簡単にするために、上記のクラス図について少し説明します。
- ほとんどの外部境界/長方形は、アセンブリ/プロジェクト用です。A) sharemanagement.model、B) sharemanagement、
C) sharemanagement.infrastructure.repositories
sharemanagement は、sharemanagement.model および sharemanagement.infrastructure.repositories によって参照されるコア (またはライブラリ) に似ていますが、sharemanagement アセンブリはこれら 2 つのいずれも参照しません (sharemanagement は、他のアセンブリが依存するコア/ベース ライブラリ/アセンブリであるためです。
- 長方形内の長方形はサブディレクトリです。
ここで、sharemanagement.model は sharemanagement に (repositoryFactory を使用して) CompanyRepository (Sharemanagement.Infrastructure.Repositories で定義) のインスタンスを返すように要求します。
また、CompanyRepository のインスタンスのインスタンスを作成している間 (上記のように Activator.CreateInstance() を使用)、CompanyRepository の基本クラス、つまり "SQLRepositoryBase" (Sharemanagement で定義) は、EntityFactory (Sharemanagement.Infrastructure.Repositories で定義) のインスタンスを取得します。 Type.GetType (の buildEntityFactory メソッド内から) EntityFactoryBuilder クラス。
CompanyFactory は内部クラスであり、アセンブリ "sharemanegement.infrastructure.repositories" 内で定義されるのに対し、EntityFactoryBuilder.buildentityFactory() クラスはアセンブリ "sharemanagement" 内で定義されることに注意してください。