gpt4 book ai didi

c# - 通用方法签名

转载 作者:行者123 更新时间:2023-11-30 19:20:05 25 4
gpt4 key购买 nike

我有一个加载引用数据的数据访问类。每种类型的实体都将执行它自己的存储过程并返回特定于该实体类型的结果集。然后我有一个方法将返回值从数据表映射到实体。所有实体类型都具有相同的代码和名称公共(public)属性,我如何才能使此方法通用以处理一种实体类型?假设是这样的事情,但属性导致了错误。

    private static T MapDataReaderToEntity<T>(IDataReader reader)
{
var entity = typeof (T);
entity.Code = SqlPersistence.GetString(reader, "Code");
entity.Name = SqlPersistence.GetString(reader, "Name");
return entity;
}

我会这样调用它。

_sourceSystem = MapDataReaderToEntity<SourceSystem>(_reader);

最佳答案

您可以有一个定义这些属性的接口(interface),然后让您的实体类实现该接口(interface):

public interface IEntity
{
string Code { get; set; }
string Name { get; set; }
}

现在,您可以为您的方法添加一个通用约束:

public static T MapDataReaderToEntity<T>(IDataReader reader) where T : IEntity, new()
{
T entity = new T();
// More code here...
}

请注意,您还需要 new() 约束来实际构造新实体;它表明任何泛型类型参数都将具有无参数构造函数。

关于c# - 通用方法签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7233980/

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