我在我的项目中使用 Microsoft 文本到文本语音功能。但我对此有一个问题,实际上不是直接的问题。所以 :
通常程序员在创建接口时,他们会将 I 作为接口名称的前缀,如 IReadable、IEnumerator 等。但我遇到过一些让我震惊的事情。
在Microsoft Text Speech DLL中有这样的东西:SpVoice,它是接口(由于某种原因他们没有将I作为前缀,我不知道为什么?)和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.
and
SpVoiceClass speak = new SpVoiceClass();
speak.Speak("Hello Kowanichi"); //and it does the same thing.
我不明白的是如何?第一个是如何工作的,尽管它说它是一个包含大量未实现方法等的接口。
请有人解释一下怎么做?
我现在真的很困惑,也许微软开发人员没有为此添加 I 前缀,它可以被实例化。
提前致谢。
希望我清楚地描述我的问题。
Here is the image that I want you to see :
(source: pixelshack.us http://www.pixelshack.us/images/dngpe9kzoq83obtiami.png)
EDIT: 啊,明白了。看一下SpVoice的定义:
[CoClass(typeof(SpVoiceClass))]
public interface SpVoice : ISpeechVoice, _ISpeechVoiceEvents_Event
{}
然后查找CoClass属性:
一个coclass供应混凝土
一个或多个的实现
接口。在COM中,这样的具体
实现可以写成任何形式
支持COM的编程语言
组件开发,例如德尔福,
C++、Visual Basic 等
我对此并不熟悉,所以不要将此视为福音,但看来,通过由CoClass
属性,您正在实例化一个实例SpVoiceClass
当你看起来正在实例化一个接口时。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)