mh_frame_sps/APT.Infrastructure.Core/Structs/LibMessageFormatManager.cs

91 lines
2.8 KiB
C#
Raw Permalink Normal View History

2026-04-07 13:47:52 +08:00
using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;
namespace APT.Infrastructure.Core
{
public class LibMessageFormatManager
{
private static LibMessageFormatManager _entityConfigManager = null;
private readonly List<LibMessageFormat> _formats = new List<LibMessageFormat>();
public static LibMessageFormatManager Instance
{
get
{
if (_entityConfigManager == null)
_entityConfigManager = new LibMessageFormatManager();
return _entityConfigManager;
}
}
public List<LibMessageFormat> Formats { get { return _formats; } }
public LibMessageFormatManager()
{
}
public string GetMessageFormat(string code, string lang)
{
var f = Formats.FirstOrDefault(t => string.Compare(t.Code, code, true) == 0);
if (f == null) throw new Exception(" message code[" + code + "] is not exist");
var ret = f.GetFormat(lang);
if (string.IsNullOrEmpty(ret)) throw new Exception("error message lang " + lang);
return ret;
}
public void AddMessageFormat(LibMessageFormat format)
{
if (string.IsNullOrEmpty(format.Code)) return;
var old = Formats.FirstOrDefault(t => string.Compare(t.Code, format.Code, true) == 0);
if (old != null) Formats.Remove(old);
Formats.Add(format);
}
}
public class LibMessageFormat
{
private readonly List<LibMessageFormatInfo> _formatInfos;
public LibMessageFormat()
{
_formatInfos = new List<LibMessageFormatInfo>();
}
public string Code { get; set; }
public void AddFormat(string lang,string format)
{
if (string.IsNullOrEmpty(format)) return;
var f = _formatInfos.FirstOrDefault(t => string.Compare(t.Lang, lang, true) == 0);
if (f != null) _formatInfos.Remove(f);
var info = new LibMessageFormatInfo()
{
Lang = lang,
Format = format,
};
_formatInfos.Add(info);
}
public string GetFormat(string lang)
{
var f = _formatInfos.FirstOrDefault(t => string.Compare(t.Lang, lang, true) == 0);
if (f != null) return f.Format;
if (_formatInfos.Any())
{
var r = _formatInfos.FirstOrDefault(t => string.IsNullOrEmpty(t.Lang));
if (r != null) return r.Format;
}
return null;
}
}
public class LibMessageFormatInfo
{
public string Lang { get; set; }
public string Format { get; set; }
}
}