I have an interface defined as:
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; }
}
}
I have a concrete implementation like:
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
}
}
I have another interface defined as:
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
}
}
I have a class defined as:
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
}
}
I am getting this error at compile time:
Cannot implicitly convert type 'System.Collections.Generic.List<RivWorks.Model.Objects.Product>' to 'System.Collections.Generic.List<RivWorks.Interfaces.DataContracts.IProduct>'
The system is a very Service (WCF, WebOrb, etc) oriented system and I wanted to expose Interfaces as my contracts. I have the Model & Controller in .NET and am using the Services as Views (proxies) to 3rd party consumers (the real View).
What am I missing or doing wrong?