2009-06-06 33 views
3

私は自分のプロジェクトでMicrosoft Text-to-Text音声機能を使用しています。しかし、私はそれについて実際には直接的ではないという疑問を持っています。だから:私はこのSpeechAPIインターフェイスをインスタンス化しているようです。そんなことがあるものか?

通常、Interfaceを作成するときに、私はIReadable、IEnumeratorなどのインターフェイス名の接頭辞としてIを挿入します。しかし、実際には私に衝撃を与えたことがあります。

Microsoft Text Speech DLLには、次のようなものがあります。Spvoiceはインターフェイスです(何らかの理由で接頭辞として使用しませんでしたが、理由はわかりません)およびSpVoiceClassです。

SpVoice speak= new SpVoice(); //I created an object from SpVoice Interface 
speak.Speak("Hello StackOverFlow"); //and it speaks and say exactly what I write. 

SpVoiceClass speak = new SpVoiceClass(); 
speak.Speak("Hello Kowanichi"); //and it does the same thing. 

私は取得しないものはどのようにある:それではあなたはここで、求めることができる問題は何ですか?どのように最初の1つは、実装されていないメソッドなどのトンとのインターフェイスですが、それは言うが、どのように動作するのですか?

何か説明してください。

私は本当に今混乱しているかもしれません。多分、Microsoftの開発者は私がその理由のために接頭辞を付けなかったかもしれません、それはインスタンス化することができます。

ありがとうございます。 私は自分の問題をはっきりと記述したいと思っています。

ここで私はあなたが見たい画像です: alt text http://www.pixelshack.us/images/dngpe9kzoq83obtiami.png

+0

これはC#ですか?インタフェースをインスタンス化することはできません。それについては疑問はありません。 – Henrik

+0

ええ、私は知っているが、それはなぜそれのようなものですか? – Tarik

+1

どこからSpeechLibを入手しましたか? –

答えて

7

EDIT:わかりました。

[CoClass(typeof(SpVoiceClass))] 
public interface SpVoice : ISpeechVoice, _ISpeechVoiceEvents_Event 
{} 

その後のCoClass属性を調べる:一つ以上の インターフェースの

コクラス用品コンクリート 実装(S)SpVoiceの定義を見てください。 COMでは、このような具体的な の実装は、COM コンポーネントの開発をサポートする任意の プログラミング言語で記述することができます。デルファイ、 C++、Visual Basicの、など

私はこれに慣れていないよ、そう福音としてこれを取ることはありませんが、コンパイラの魔法がCoClass属性によってトリガを通じて、あなたがしている、と思われますインターフェイスをインスタンス化しているように見えるときにSpVoiceClassのインスタンスをインスタンス化します。

+0

私はCOMから自分のプロジェクトにMicrosoft Speech Object Libraryをインポートしました。 – Tarik

+0

と私は入れた画像からSpVoiceClassを見ることができます。 – Tarik

+0

ありがとうございました。素敵な一日を過ごしてください:) – Tarik

0

あなたがSpVoiceを行うことができた場合は、(=新しいSpVoiceを話す)、エラーを取得していない、それは、SpVoiceはコンストラクタを持つ意味しますこれは、NOTのインタフェースであることを意味します。

+0

これはインターフェイスです。あなたが私を信じていなければ、自分でそれをチェックすることができます。 – Tarik

+0

どこから確認しますか? –

+0

私は私の最初の投稿を編集し、それを描いた。私の質問のすぐ下で、インスタンス上にマウスを置くとヒントが表示されます。 – Tarik

0

「私」のことをあまりにも遠ざけてください。その命名規則。 おそらく、spVoiceはインターフェイスではありません。私はあなたがspVoiceが実際にインターフェイスであると結論付けた方法を知っていますか?

インターフェイスの場合は、インスタンス化できません。

+0

私はそれを実際に正確に描いています。 – Tarik

関連する問題