void execute () { namespace bmpl = boost::mpl; typedef StaticTypeInfo<Base> StaticBaseInfo; TypeManager& f = TypeManager::GetInst(); TypeInfo const& baseInfo = f.GetInfoFromId( StaticBaseInfo::GetTypeId() ); info->AddInterface( baseInfo ); f.AddTypeImplementation( baseInfo.GetId(), info->GetId() ); // "from" info to type id , anyStaticCast<ToType, FromType> info->AddCast( baseInfo.GetId(), &AnyStaticCast<Base, D> ); baseInfo.AddCast( info->GetId(), &AnyStaticCast<D, Base> ); for_each_type< typename StaticBaseInfo::BaseTypes >( AddBase<D>(*info) ); }