2017-12-12 1 views
-1

WPFのボタンから関数を呼び出そうとしています。C#のボタンからインターフェイスを使用している関数を呼び出す方法

public RecorderView(IAudioRecorder recorder) 
    { 
     RecorderViewModel rvm = new RecorderViewModel(); 
     beginRecordingCommand = new RelayCommand(rvm.BeginRecording,() => recorder.RecordingState == RecordingState.Stopped || recorder.RecordingState == RecordingState.Monitoring); 

    } 

私はそれがインタフェース(IAudioRecorderレコーダー)を使用しているので、この関数を呼び出す方法がわからないよ: は、ここで私は呼んしようとしている機能です。 通常は、ボタンのクリックイベント内でRecorderView()を呼び出すだけですが、インターフェイスを使用しているので、どうすればいいですか?

おかげ

答えて

0

あなたがインターフェイスを実装するクラスを持っている場合は...

class AudioRecorder : IAudioRecorder 
{ 
    //Etc.... 

...とインタフェース....

public RecorderView(IAudioRecorder recorder) 

を期待コンストラクタ。あなたはクラスのインスタンスでそれを呼び出すことができます。

var a = new AudioRecorder(); 
var b = new RecorderView(a); //a is automatically cast to the interface 

...またはあなたはIoCコンテナを使用してインスタンス化することができます...

container.RegisterType<IAudioRecorder, AudioRecorder>(); 
container.RegisterType<RecorderView, RecorderView(); 
var b = container.Resolve<RecorderView>(); 

...とIoCコンテナはあなたのために、コンストラクタの引数に移入されます。

+0

ありがとうございます!私は先週、これを理解しようと過ごしました。私は、私がその関数を呼んでいたものについてコンストラクタを混乱させたことも分かります。 – Shane

関連する問題