Appearance
Activation Factory 在 Windows Runtime 中承担的角色
原文:The role of the activation factory in the Windows Runtime
日期:2024年8月22日
Windows Runtime 具有称为激活工厂(Activation Factory)的东西,你可以通过调用RoGetActivationFactory
来获取这些工厂。那什么是激活工厂?
激活工厂的主要用途正如其名:激活(创建)对象。每个激活工厂都实现IActivationFactory
接口,该接口只有一个方法:ActivateInstance
,可以创建并返回一个对象。
目前,IActivationFactory::ActivateInstance
方法不接受任何输入参数,因此仅当对象具有默认构造函数(无参数)时,才能使用此方法。如果你的类有接受参数的构造函数,那么你得考虑更多。
类的非默认构造函数通常放置在名为IWidgetFactory
的自定义接口上。例如,如果你有一个 runtime class,该类的构造函数采用字符串参数:
c++
runtimeclass Widget
{
Widget(String name);
}
则IWidgetFactory
接口将具有类似如下的方法:
c++
HRESULT IWidgetFactory::CreateInstance([in] HSTRING name, [out, retval] IWidget** result);
构造函数的参数是CreateInstance
方法的参数,CreateInstance
方法的输出是新创建的对象。
激活工厂提供的另一项内容是类的静态成员。静态成员位于通常命名为IWidgetStatics
的接口上。例如,如果我们有一个静态方法FindByName
:
c++
runtimeclass Widget
{
static Widget FindByName(String name);
}
则IWidgetStatics
接口将具有类似如下的方法:
c++
HRESULT IWidgetStatics::FindByName([in] HSTRING name, [out, retval] IWidget** result);
总之,激活工厂是一个放置类中可执行的所有非实例成员操作的地方。它是表示类本身的对象,而不是类的任何实例。
额外的闲聊:如果你将构造函数视为“返回新构造对象的名为CreateInstance
的静态方法”,那么你也可以将激活工厂视为放置所有静态成员的地方。