具有子泛型类型的通用工厂方法

Bru*_*lva 3 c# generics

我有一个使用Enter和Exit类型定义的InterfaceExecuter类型,两者都是struct.在另一个类中,我想创建一个实例化实现我的接口的类的方法,如下所示:

 public T<TEntry, TExit> Initiate<T<TEntry, TExit>>()
        where T: InterfaceExecuter<TEntry, TExit>, new()
        where TEntry:struct
        where TExit:struct
    {
        return new T<TEntry, TExit>();
    } 
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

vas*_*ski 7

你几乎就在那里,只需将返回类型定义(T)为泛型参数.

通过这种约束,T: InterfaceExecuter<TEntry, TExit>您已经定义了泛型类型的结构,T因此在实例化时不需要显式使用泛型参数(编译器也不允许它)

public T Initiate<T, TEntry, TExit>()
            where T: InterfaceExecuter<TEntry, TExit>, new()
            where TEntry:struct
            where TExit:struct
        {
            return new T();
        } 
Run Code Online (Sandbox Code Playgroud)