using System;
using System.Collections.Generic;
using System.Windows.Media;
using Aitex.Core.RT.SCCore;

namespace MECF.Framework.Common.SCCore
{
	public interface ISCManager
	{
		T GetValue<T>(string name) where T : struct;

		string GetStringValue(string name);

		void SetItemValue(string name, object value, bool temporarily = false);

		void SetItemValue(string name, bool value, bool temporarily = false);

		void SetItemValue(string name, int value, bool temporarily = false);

		void SetItemValue(string name, double value, bool temporarily = false);

		void SetItemValue(string name, string value, bool temporarily = false);

		public void SetItemValue(string name, Color value, bool temporarily);

		SCConfigItem GetConfigItem(string name);

		bool ContainsItem(string name);

		List<SCConfigItem> GetItemList();

		string GetFileContent();

		T SafeGetValue<T>(string name, T defaultValue) where T : struct;

		string SafeGetStringValue(string name, string defaultValue);


        /// <summary>
        /// 注册一个回调函数，当指定的配置项发生变化时，调用此函数。
        /// </summary>
        /// <param name="name">系统配置项名称。</param>
        /// <param name="callback">
        /// 当配置项值变化时，调用此委托。
        /// <br/>
        /// 此委托的传入参数为系统配置值变更后的新值。
        /// </param>
        void RegisterValueChangedCallback(string name, Action<object> callback);
    }
}
