我有.NET代码使用的vb6 com服务器(ActiveX DLL项目)
每次我将更改放入vb6代码并生成dll时,我也必须重新编译我的.NET客户端代码,因为它看起来像VB6为接口和com对象生成新的GUID或版本.
我承认这是一个很好的做法,因为进行了更改,但我想禁用此行为,以便每次更新我的vb6 dll时都让我的.NET客户端代码相同.
无论对COM对象或COM接口做了哪些更改,我如何告诉VB6保持ActiveX dll的所有GUID和版本都一样?
我有用于旋转的矩阵:
CvMat* rot_mat = cvCreateMat(2, 3, CV_32FC1);
cv2DRotationMatrix(center, angle, scale, rot_mat);
...
Run Code Online (Sandbox Code Playgroud)
该矩阵用于图像操作。
cvWarpAffine(..., ..., rot_mat, ..., ...);
Run Code Online (Sandbox Code Playgroud)
我必须知道,此矩阵应如何影响确切的像素-应该转移的位置。
如何将2D点(像素位置)与矩阵相乘以找出应将像素转移到哪里?
程序集"A"提供了提供静态属性的有价值的类...
class ValuableClass
{
public static string MyProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
程序集"B"和"C"使用ValuableClass,它是静态属性.在同一过程中加载"B"和"C"之前,每次都可以.
我应该如何重构MyStaticProperty实现以保持"B"和"C"调用隔离?我不能依赖线程ID(几个线程可能会为每个程序集更改静态属性)而且我也不能依赖进程ID,因为它是相同的进程.
我想简化代码应该如下所示,但我不确定这是最好的做法
protected static IDictionary<string, string> MyProperties
public static string MyProperty
{
set {
string key = Assembly.GetCallingAssembly().FullName
MyProperties[key] = value;
}
get {
string key = Assembly.GetCallingAssembly().FullName
return MyProperties[key];
}
}
Run Code Online (Sandbox Code Playgroud)