0
package
クラスをいくつか送信します。これをシリアル化してネットワーク経由で送信します。すべてのパッケージはAbstractPackage
を拡張:オブジェクト型を実際の型にキャストする
public abstract class AbstactPackage() {}
public class UpdatePackage : AbstractPackage {
public float x, y, rot;
public UpdatePackage(float pX, float pY, float pRot) {
x = pX; y = pY; rot = pRot;
}
}
パッケージは、それがabstractPackageインスタンスにシリアライズされますとreadResponseが呼び出された他のコンピュータで受信された後。しかし、今、私はこのインスタンスが、私が持っているパッケージの種類ごとreadResponse関数のif文、私は別の30を持っている現時点では正確に(例えばUpdatePackage)
private void readResponse(AbstractPackage p) {
if(p is UpdatePackage) readResponse(p as UpdatePackage);
}
private void readResponse(UpdatePackage p) { ... }
で、どのタイプかを決定する必要があります。もっと動的にこれを行う方法はありますか?
私はunityで作業しており、古いdotNetバージョンを使用しているため、dynamicキーワードは使用できません。
たぶん、より良いivamax9 @ジェネリック – ivamax9
としてreadResponseを作るために:私は、呼び出し側がコンパイル時に型を知らないことが重要だと考えています。 –
ええ、呼び出し元は、それがAbstractPackageであることだけを知っています。 –