私は自分のタイトルを正しく説明していない可能性が高く、私がやろうとしていることについての用語が完全に不足しています.
だからここに私の問題があります。DLLを作成しています。もちろん、この DLL にはいくつかのクラスが含まれています。呼び出し元のソリューションは、これらのクラスとそのさまざまなメソッドにアクセスする必要があります。
ただし、このクラスの一部である何かを使用するときはいつでも特定の情報が必要になるため、呼び出し元のプログラムに「Parent\Root」クラスのインスタンスのみを作成するように強制したいと考えています (ライセンス キーのようなものと考えてください。本当)。
だからクライアントの視点から..私はそれがそのように動作することを望みます..
FooDll.Client myFooClient = new FooDLL.Client(myLicensesKey)
myFooClient.Store.PlaceOrder()
myFooClient.Shop.FixWidget()
今私のDLL側から、私はこのようなことを考えていました...
public class Client
{
public StoreLogic Store {get;} //This is a internal Class that contains the method PlaceHolder
public ShopLogic Shop {get;} //This is an internal Class that contains the method FixWidget
public Client(string LicenseKey)
{
set some internal global flags for the entire library
}
}
クラス StoreLogic と ShopLogic を "Public" として宣言する限り、これを行うことができます。しかし、私がそれを行うと、クライアントはこれを行うことができます...
FooDll.StoreLogic myStore = new FooDLL.StoreLogic()
これは私が望んでいないことです。