/// <summary> /// メッセージクラスをシリアライズしてJSON文字列を取得する /// nullの要素には初期値が設定される /// </summary> /// <param name="message">メッセージクラスオブジェクト</param> /// <returns>JSON文字列。メッセージクラスオブジェクトがnullの場合にはnullを返す</returns> public static string CreateJsonString(ServerSyncMessage message) { if (message == null) { return(null); } return(JsonConvert.SerializeObject(message)); }
/// <summary> /// メッセージクラス内のスクリプト設定同士を比較する /// </summary> /// <param name="m1">メッセージクラスオブジェクト1</param> /// <param name="m2">メッセージクラスオブジェクト2</param> /// <returns>比較結果。内容が完全に一致していればtrueを返す</returns> private static bool ScriptConfigEquals(ServerSyncMessage m1, ServerSyncMessage m2) { List <string> keys1 = new List <string>(m1.Script.Keys); List <string> keys2 = new List <string>(m2.Script.Keys); // キーの数を比較 if (keys1.Count != keys2.Count) { return(false); } // 要素の比較 for (int i1 = 0; i1 < keys1.Count; i1++) { string key1 = keys1[i1]; for (int i2 = 0; i2 < keys2.Count; i2++) { string key2 = keys2[i2]; // キーが一致しているか? if (key1.Equals(key2)) { // 同じキーを持つ設定不一致のため終了 if (!ScriptConfig.Equals(m1.Script[key1], m2.Script[key2])) { return(false); } break; } else { // key1に一致するkey2が存在しなかった場合は設定不一致のため終了 if (i2 == keys2.Count - 1) { return(false); } } } } return(true); }
/// <summary> /// 2つのメッセージクラスオブジェクトを比較する /// </summary> /// <param name="m1">メッセージクラスオブジェクト1</param> /// <param name="m2">メッセージクラスオブジェクト2</param> /// <returns>比較結果。内容が完全に一致していればtrueを返す</returns> public static bool Equals(ServerSyncMessage m1, ServerSyncMessage m2) { // ストレージ設定またはスクリプト設定のいずれかが一致していなければ不一致と判定する return(ScriptConfigEquals(m1, m2) && StorageConfigEquals(m1, m2)); }