我希望你能帮助我理解有关程序集依赖的微妙问题。我的项目通过自定义包装器使用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类型参数的方法却不会?