gpt4 book ai didi

c# - 将具体对象类型作为泛型方法的参数传递

转载 作者:太空狗 更新时间:2023-10-29 19:57:11 25 4
gpt4 key购买 nike

我有一个使用通用方法的 API,如下所示

public static class DataProvider
{
public static Boolean DeleteDataObject<T>(Guid uid, IDbConnection dbConnection)
{
// Do something here
}

public static IDbConnection GetConnection()
{
// Get connection
}
}

我的应用程序包含在运行时使用 CodeDOM 生成的类,为了跟踪我创建了一个名为 IDataObject 的接口(interface)。我正在尝试将每个对象的具体类型传递给上面的通用方法,如下所示:

public static Boolean PurgeDataObject(this IDataObject dataObject, Guid uid)
{
return DataProvider.DeleteDataObject<T>(uid, DataProvider.GetConnection());
}

dataObject 包含从 IDataObject 继承的类的实例。我有兴趣获取该类型并将其作为 T 传递。我试图找出是否有可能在这里以某种方式使用 dynamictypeof()GetType() 无法按照 Here 中的说明工作

最佳答案

我怀疑你想要这样的东西:

public static Boolean PurgeDataObject(this IDataObject dataObject, Guid uid)
{
return PurgeDataObjectImpl((dynamic) dataObject, uid);
}

private static Boolean PurgeDataObjectImpl<T>(T dataObject, Guid uid)
where T : IDataObject
{
return DataProvider.DeleteDataObject<T>(uid, DataProvider.GetConnection());
}

动态使用 dataObject,让“执行时编译器”执行类型推断以计算出 T

可以自己使用反射来完成此操作,使用 MethodInfo.MakeGenericMethod - 但这种方式肯定会减少代码。

关于c# - 将具体对象类型作为泛型方法的参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16491618/

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