通过System.Drawing.common.bitmap(.NET标准2.0)到class Expecting Sy



我正在将.NET 4.7.2从.NET 4.7.2转换为.NET标准的某些类库(以便其他标准/核心组件可以更好地使用它们),并且我正在遇到特定第三方库的问题。该库执行图像处理,许多类的方法从经典System.Drawing名称空间中取ImageBitmap对象。

我找到了其中包含兼容性类的.NET标准软件包System.Drawing.Common,以便我自己在源代码中对这些类的用途正常。但是,当我尝试将这些课程之一通过此库中时,我会发现一个错误:

引用类型"位图"声明是在" system.drawing"中定义的,但找不到

我想我知道这里发生了什么(类型是在带有不同名称的组件中定义的,因此它们是不同的类型)。但是,有什么方法可以像IS一样做这些工作?还是要求第三方库的供应商在其身边进行更改以支持.NET标准?

我也有同样的问题,我能够使用反射的黑暗魔法调用这些方法。我不相信它会起作用,但是(至少似乎是):

var bmp = new Bitmap(1, 1);
var assembly = Assembly.GetAssembly(typeof(ImageElement));
var elem = (ImageElement)assembly.CreateInstance("Winnovative.ImageElement", true, BindingFlags.Default, null, new object[] { 0f, 0f, 1f, 1f, bmp }, null, null);

System.Drawing不是.NET标准的一部分,因此类型不兼容。

此外,我不会使用System.Drawing.Common,因为它只是围绕GDI 的包装器,在诸如服务器端代码之类的多线程环境中都无法正常工作。

我建议您搬到ImageSharp或Skiasharp,这两个都应在您的所有项目中工作。

最新更新