gpt4 book ai didi

c# - 关于 List 和 WCF 的说明

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

我是 WCF 的新手,想了解一下。我正在尝试返回 List<T>从我的 WCF,但当我尝试使用它时出现错误。无法转换 T[]到一种 List<T> .以下示例。

问题:这是因为 WCF 可以被多种技术使用并转换为数组吗?

接口(interface):

[ServiceContract]
public interface I_UI_Service
{
[OperationContract]
List<Site> Get_Sites(string ntid);
}

[DataContract]
[Serializable]
public class Site
{
public Site(int id, string description)
{
this.ID = id;
this.Description = description;
}

[DataMember]
public int ID { get; set; }

[DataMember]
public string Description { get; set; }
}

代码:

    public List<Site> Get_Sites(string ntid)
{
List<Site> returnList = new List<Site>();
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "SPROC_Name";
cmd.Parameters.AddWithValue("@NTID", ntid);
using (SqlConnection conn = new SqlConnection(DB_ConnectionString()))
{
cmd.Connection = conn;
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();

while (reader.Read())
{
returnList.Add(new Site(Convert.ToInt16(reader["SiteID"]), reader["SiteDescription"].ToString()));
}
conn.Close();
}
}
return returnList;
}

使用列表消费:(错误)

    List<Site> _Sites;

public List<Site> Sites
{
get
{
if (_Sites == null)
{
UI_Data.I_UI_ServiceClient sc = new UI_Data.I_UI_ServiceClient();
_Sites = sc.Get_Sites("MyInfo");
}
return _Sites;
}
}

Consuption using T[ ]:(让它工作以及为什么我的问题)

    Site[] _Sites;

public Site[] Sites
{
get
{
if (_Sites == null)
{
UI_Data.I_UI_ServiceClient sc = new UI_Data.I_UI_ServiceClient();
_Sites = sc.Get_Sites("MyInfo");
}
return _Sites;
}
}

最佳答案

WCF 将通用列表序列化为数组,但您可以在添加服务引用时通过单击高级按钮将它们转换回通用列表(您会看到下拉菜单默认填充有数组,但您可以更改它们列表)。

当您使用此选项时,通过线路发送的数组将转换为通用列表供您使用。它不会改变信息的发送方式。

关于c# - 关于 List<T> 和 WCF 的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12945665/

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