跳转至

resolve_generic

symphra_container.generics.resolve_generic(container, generic_type)

解析泛型服务.

参数:

名称 类型 描述 默认
container Container

容器实例

必需
generic_type Any

泛型类型,例如 Repository[User]

必需

返回:

类型 描述
Any

解析的服务实例

引发:

类型 描述
ValueError

如果不是有效的泛型类型

ServiceNotFoundError

如果服务未注册

示例

user_repo = resolve_generic(container, Repository[User]) order_repo = resolve_generic(container, Repository[Order])

源代码位于: src/symphra_container/generics.py
def resolve_generic(container: Container, generic_type: Any) -> Any:
    """解析泛型服务.

    Args:
        container: 容器实例
        generic_type: 泛型类型,例如 Repository[User]

    Returns:
        解析的服务实例

    Raises:
        ValueError: 如果不是有效的泛型类型
        ServiceNotFoundError: 如果服务未注册

    示例:
        >>> user_repo = resolve_generic(container, Repository[User])
        >>> order_repo = resolve_generic(container, Repository[Order])
    """
    generic_key = _extract_generic_info(generic_type)
    if generic_key is None:
        msg = f"Not a valid generic type: {generic_type}"
        raise ValueError(msg)

    return container.resolve(generic_key)  # type: ignore