C#接口和通用列表
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#接口和通用列表,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3345字,纯文字阅读大概需要5分钟。
内容图文
![C#接口和通用列表](/upload/InfoBanner/zyjiaocheng/763/6ce7f9c2019746b8afe38780fc833a39.jpg)
我有一个接口定义为:
namespace RivWorks.Interfaces.DataContracts
{
public interface IProduct
{
[XmlElement]
[DataMember(Name = "ID", Order = 0)]
Guid ProductID { get; set; }
[XmlElement]
[DataMember(Name = "altID", Order = 1)]
long alternateProductID { get; set; }
[XmlElement]
[DataMember(Name = "CompanyId", Order = 2)]
Guid CompanyId { get; set; }
...
[XmlElement]
[DataMember(Name = "buttonPositionCSS", Order = 14)]
string buttonPositionCSS { get; set; }
}
}
我有一个具体的实现,如:
namespace RivWorks.Model.Objects
{
[DataContract(Name = "Product", Namespace = "http://rivworks.com/DataContracts/2009/01/15")]
public class Product : IProduct
{
#region Declarations
private Guid _productID;
private long _altProductID;
private Guid _companyId;
...
private string _buttonPositionCSS;
#endregion
#region IProduct Members
public Guid ProductID { get { return _productID; } set { _productID = value; } }
public long alternateProductID { get { return _altProductID; } set { _altProductID = value; } }
public Guid CompanyId { get { return _companyId; } set { _companyId = value; } }
...
public string buttonPositionCSS { get { return _buttonPositionCSS; } set { _buttonPositionCSS = value; } }
#endregion
}
}
我有另一个接口定义为:
namespace RivWorks.Interfaces.Services
{
public interface IProductManager
{
#region Products
IProduct GetProductById(Guid productId);
List<IProduct> GetProductByCompany(Guid companyId);
int SaveProduct(IProduct product);
int DeleteProduct(Guid productId);
#endregion
}
}
我有一个类定义为:
namespace RivWorks.Controller
{
public class ProductManager : IProductManager
{
#region Declare Models
private static RivWorks.Model.Negotiation.RIV_Entities _dbRiv = RivWorks.Model.Stores.RivEntities(AppSettings.RivWorkEntities_connString);
private static RivWorks.Model.NegotiationAutos.RivFeedsEntities _dbFeed = RivWorks.Model.Stores.FeedEntities(AppSettings.FeedAutosEntities_connString);
#endregion
#region Products
public IProduct GetProductById(Guid productId)
{
// deleted for simplicity sake
return product;
}
public List<IProduct> GetProductByCompany(Guid companyId)
{
var company = (from a in _dbRiv.Company where a.CompanyId == companyId select a).First();
var companyDetails = from a in _dbRiv.AutoNegotiationDetails where a.CompanyId == companyId select a;
// ################################################## //
List<IProduct> productList = new List<RivWorks.Model.Objects.Product>();
// ################################################## //
// deleted for simplicity sake
return productList;
}
public int SaveProduct(IProduct product)
{
return 0; // stub
}
public int DeleteProduct(Guid productId)
{
return 0; // stub
}
#endregion
}
}
我在编译时收到此错误:
Cannot implicitly convert type ‘System.Collections.Generic.List<RivWorks.Model.Objects.Product>’ to ‘System.Collections.Generic.List<RivWorks.Interfaces.DataContracts.IProduct>’
该系统是一个非常服务(WCF,WebOrb等)的系统,我想公开接口作为我的合同.我有Model& .NET中的控制器,我使用服务作为第三方消费者的视图(代理)(真正的视图).
我错过了什么或做错了什么?
解决方法:
尝试改变:
List<IProduct> productList = new List<RivWorks.Model.Objects.Product>();
至:
List<IProduct> productList = new List<IProduct>();
或者(如果在返回列表之前需要使用List的元素作为其具体实现而不是Interface):
List<RivWorks.Model.Objects.Product> productList =
new List<RivWorks.Model.Objects.Product>();
// Do some work here.
return productList.Cast<IProduct>().ToList();
内容总结
以上是互联网集市为您收集整理的C#接口和通用列表全部内容,希望文章能够帮你解决C#接口和通用列表所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。