gpt4 book ai didi

c# - 使用泛型接口(interface)作为方法或函数的类型参数

转载 作者:行者123 更新时间:2023-12-04 00:48:45 25 4
gpt4 key购买 nike

假设我使用以下接口(interface)来定义存储过程的参数类型和返回类型...

public interface IStoredProcedure<out TReturn, out TParameter>
where TReturn : class
where TParameter : class
{
TReturn ReturnType { get; }

TParameter ParameterType { get; }
}

...是否可以将此接口(interface)作为方法的 TypeParameter 传递?与此类似的内容(无法编译)

public static void DoAction<TProcedure>(TProcedure procedure1)
where TProcedure : IStoredProcedure<TReturnType, TParameterType>
{
// do some work
}

...或者类似的东西...

public static void DoAction<IStoredProcedure<TReturnType, TParameterType>>(IStoredProcedure procedure1)
where TReturnType : class
where TParameterType : class
{
// do some work
}

这两种方法都不能编译,我只是不知道如何编写它们来使它们编译。在 DoAction() 方法中,我需要询问参数的类型和返回类型。

最佳答案

您需要在指定接口(interface)时使用类型参数:

public static void DoAction<TReturnType, TParameterType>
(IStoredProcedure<TReturnType, TParameterType> procedure1)
where TReturnType : class
where TParameterType : class
{
// do some work
}

...否则您指的是非通用的IStoredProcedure接口(interface)。 (不要忘记,C# 允许通过泛型数量“重载”类型。)

关于c# - 使用泛型接口(interface)作为方法或函数的类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32003500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com