アセンブリの依存関係について理解したい微妙な点があります。次のようなカスタムラッパーを介して SharpDX を使用するプロジェクトがあります。
SharpDX.dll <- Wrapper.dll <- Project.dll
Wrapper.dll には、次のような型があります。
public class D3DWrapperTypeA {
//public D3DWrapperTypeA(SharpDX.Device device) {
//
//}
public D3DWrapperTypeA(IntPtr devicePointer) {
SharpDX.Device device = new SharpDX.Device(devicePointer);
// etc
}
}
このクラスでは、コメント化されたコンストラクターのコメントを外すと、Project.dll はコンストラクターを使用しない場合でも、SharpDX.dll を参照する必要があります。
ただし、次のような別のラッパー タイプもあります。
public class WrapperTypeB {
public SharpDX.Device GetDevice(int adapter) {
// etc
}
public IntPtr GetDevicePointer(int adapter) {
return GetDevice(adapter).NativePointer;
}
}
ここで、SharpDX オブジェクトを返す GetDevice メソッドを実際に使用しない限り、Project.dll は SharpDX.dll を参照する必要はありません。
SharpDX 型のパラメーターを受け取る未使用のコンストラクターでも SharpDX への依存が発生するのに、SharpDX 型のパラメーターを返す未使用のメソッドは依存しないのはなぜですか?