You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MAUI安卓真机调试报错:无法识别Microsoft.Maui.Graphics.Color

解决MAUI三星安卓设备上Color类型的NotSupportedException错误

问题根源

从代码中的[PrimaryKey]等特性判断,你应该使用SQLite存储Aditiv对象。SQLite不支持直接序列化Microsoft.Maui.Graphics.Color这类复杂对象,模拟器环境的SQLite实现可能兼容宽松,但三星真机的SQLite执行逻辑更严格,因此抛出异常。

解决步骤

  1. 替换Color属性为可序列化的基础类型
    不要直接存储Color对象,改用存储颜色的十六进制字符串(或RGB数值),字符串是SQLite原生支持的类型,能避开序列化问题。

  2. 修改Aditiv类代码
    添加一个用于持久化的字符串属性存储颜色值,再创建一个标记为[Ignore]的Color属性供UI使用,示例如下:

using SQLite;
using Microsoft.Maui.Graphics;

public class Aditiv
{
    [PrimaryKey, AutoIncrement]
    public int ID { get; set; }
    public string Cod { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public int CategoryId { get; set; }

    // 用于SQLite存储的十六进制颜色字符串
    public string CuloareHex { get; set; }

    // 供UI使用的Color属性,不存入数据库
    [Ignore]
    public Color Culoare
    {
        get
        {
            // 如果已有存储的颜色值,直接转换返回
            if (!string.IsNullOrEmpty(CuloareHex))
                return Color.FromHex(CuloareHex);
            
            // 根据CategoryId生成对应颜色并存储
            Color targetColor;
            switch (CategoryId)
            {
                case 1:
                    targetColor = Color.FromRgb(0, 180, 0);
                    break;
                case 2:
                    targetColor = Color.FromRgb(255, 200, 0);
                    break;
                case 3:
                    targetColor = Color.FromRgb(200, 0, 0);
                    break;
                default:
                    targetColor = Color.FromRgb(0, 0, 0);
                    break;
            }
            CuloareHex = targetColor.ToHex();
            return targetColor;
        }
        set
        {
            CuloareHex = value.ToHex();
        }
    }
}
  1. 避免混用平台特定Color类型
    不要在跨平台代码中使用Android.Graphics.Color这类平台专属类型,MAUI统一使用Microsoft.Maui.Graphics.Color即可,保证跨平台兼容性。

验证效果

修改代码后重新编译部署到三星设备,此时SQLite只会存储字符串类型的颜色值,不会再抛出序列化异常,同时UI层依然可以正常使用Color属性。

内容的提问来源于stack exchange,提问作者andreig

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 22:20:59