インターネット経由でルームオーディオシステムのリモートコントロールを有効にして、ホームメディアシステムをアップグレードするように割り当てられました。それはレガシーシステムなので、私はアーキテクチャの多くを変更することはできません。以下は、プログラムの簡略化された形式です。システムは、Home_Media_Systemオブジェクトで初期化されたいくつかのメインクラスで構成されています。C#の他の兄弟クラス内のクラスから兄弟クラスの関数を呼び出す方法
class Home_Media_System
{
Network _networkdata
Speakers _speakers
Lights _lights
Household_devices household_devices
}
class Speakers
{
void Play_Audio();
}
class Network
{
UdpReceiver udpReceiver
UdpTransmitter udpTransmitter
}
class UdpReceiver
{
void receive_audio_player_command()
{
if(playCommand)
start_audio();
}
void start_audio()
{
//How do I call the Play_Audio() function in class Speakers
}
}
class UdpTransmitter
{
void send_response();
}
私の問題は、ネットワーククラス内UdpReceiverクラスでコマンドを受信した後、Play_Audio()関数を呼び出すことです。一文で説明するのはかなり難しいので、これで質問のタイトルがクリアーになることを願っています。
メインクラスはHome_Media_Systemで初期化されることに注意してください。今はダブルイベントハンドラの使用を考えていますが、もっとエレガントな方法があるのだろうかと思います。
この質問には回答できません。それはあなたのソフトウェアの実装に依存します。 – Liam
代表団のように聞こえます – Jodrell
クラスはパブリックではないため、メインクラス以外のクラスにアクセスすることはできません。 – jdweng