gpt4 book ai didi

c# - 是否可以使用 C# 泛型

转载 作者:太空宇宙 更新时间:2023-11-03 18:41:30 24 4
gpt4 key购买 nike

这是我需要定义的接口(interface)。我不能,因为 Parameters 属性中的泛型类型参数不存在。有没有办法在C#中实现这种接口(interface)定义?

已更新我不想这样定义接口(interface):ICriteria<T> .

public interface ICriteria
{
string Text { get; set; }
IList<IParameter<T>> Parameters { get; set; }
}

已更新

由于需要更多详细信息,所以我不想走那条路。这里有更多关于它的信息。 我有这样的参数接口(interface)和实现

public interface IParameter<T>
{
string Name { get; set; }
T Value { get; set; }
}

public class Parameter<T> : IParameter<T>
{
public string Name { get; set; }
public T Value { get; set; }
}

并且该方法像这样使用上面的实现

public ICriteria BuildQuery()
{
ICriteria criteria = new Criteria();
criteria.Text = "dbo.Messages";

var chatRoom = new Parameter<int>() { Name = "ChatRoomId", Value = _chatRoomId };
var startDate = new Parameter<DateTime>() { Name = "StartDate", Value = _startDateTime };
var endDate = new Parameter<DateTime>() { Name = "EndDate", Value = _endDateTime };

//I want to add all parameters to criteria instance
criteria.Parameters.Add(chatRoom);
criteria.Parameters.Add(startDate);
criteria.Parameters.Add(endDate);

return criteria;
}

上述方法创建了不同类型的参数,并尝试将它们添加到 ICriteria 界面的参数列表中。希望它有意义。

最佳答案

您需要为您的 ICriteria 接口(interface)声明一个类型参数 T 以便在其主体中使用它:

public interface ICriteria<T>
{
string Text { get; set; }
IList<IParameter<T>> Parameters { get; set; }
}

我想这就是你的意图;如果我误解了这个问题,请告诉我。

关于c# - 是否可以使用 C# 泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8352511/

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