私は信じられないほど短くする必要があると感じるコードをいくつか持っていますが、それをどうやって行うのか分かりません。このコードを短縮するためにリフレクションを使用できますか?
私はMessageという基本クラスを持っており、そこから派生したクラスになります。
namespace ModalVR {
public class Message {
public string message;
public Message() {
this.message = this.ToString();
}
}
}
サブクラスはJSONに変換され、このJSONを受け取る関数があり、適切なクラスを作成する必要があります。しかし、それを行う関数は大文字小文字のステートメントを持っており、私はこれを行うためのより良い方法がなければならないと感じています。これは、その関数の外観です。
public Message ConstructMessageFromJSON(string JSON) {
string messageName = JsonUtility.FromJson<Message>(JSON).message;
Message derivedMessage = null;
switch(messageName) {
case "ModalVR.GetBatteryInfo": {
derivedMessage = JsonUtility.FromJson<GetBatteryInfo>(JSON);
break;
}
case "ModalVR.GetBatteryInfoResponse": {
derivedMessage = JsonUtility.FromJson<GetBatteryInfoResponse>(JSON);
break;
}
// Many more case statements snipped out
default: {
LogManager.Log("Received unknown message of " + messageName, LogManager.LogLevel.Error);
break;
}
}
return derivedMessage;
}
この大文字のステートメントを簡単に置き換えることはできますか?事前 ジョン・ローリー
これは参考になる場合があります。 https://stackoverflow.com/questions/36239705/serialize-and-deserialize-json-and-json-array-in-unity – hatchet
これは本当に仮想関数の場合のようです。タイプを切り替えると、スイッチを入れたばかりのタイプでのみ異なるものが実行されます。 –