If I want to set the DataSource property on a BindingSource to an IList<>, do I need an explicit cast as the following error message says or am I doing something wrong?
interface IView
{
IList<OrderItems> BindingSource { get; set;}
}
public partial class Form1 : Form, IView
{
public Form1()
{
InitializeComponent();
}
private BindingSource _bindingSource;
public IList<OrderItems> BindingSource
{
get { return _bindingSource; }
set
{
_bindingSource.DataSource = value;
dataGridView1.DataSource = _bindingSource;
}
}
}
OrderItems.cs
using System;
using System.Collections.Generic;
namespace Ordering.Data
{
/// <summary>
/// Order object for NHibernate mapped table 'Order'.
/// </summary>
[Serializable]
public class OrderItems
{
#region Member Variables
protected int _id;
protected Customers _customers;
protected string _ordername;
protected DateTime _orderdate;
protected DateTime? _shipdate;
protected string _shipvia;
protected string _shipname;
protected string _shipaddress;
protected string _shipcity;
protected string _shipregion;
protected string _shippostalcode;
protected string _shipcountry;
protected string _status;
protected DateTime? _lastupdate;
protected IList<Products> _products;
#endregion
#region Constructors
public OrderItems() {}
public OrderItems(Customers customers, string ordername, DateTime orderdate, DateTime? shipdate, string shipvia, string shipname, string shipaddress, string shipcity, string shipregion, string shippostalcode, string shipcountry, string status, DateTime? lastupdate)
{
this._customers= customers;
this._ordername= ordername;
this._orderdate= orderdate;
this._shipdate= shipdate;
this._shipvia= shipvia;
this._shipname= shipname;
this._shipaddress= shipaddress;
this._shipcity= shipcity;
this._shipregion= shipregion;
this._shippostalcode= shippostalcode;
this._shipcountry= shipcountry;
this._status= status;
this._lastupdate= lastupdate;
}
public OrderItems(Customers customers, string ordername, DateTime orderdate)
{
this._customers= customers;
this._ordername= ordername;
this._orderdate= orderdate;
}
#endregion
#region Public Properties
public virtual int Id
{
get { return _id; }
set { _id = value; }
}
public virtual Customers Customers
{
get { return _customers; }
set {_customers= value; }
}
public virtual string OrderName
{
get { return _ordername; }
set {
if ( value != null && value.Length > 255)
throw new ArgumentOutOfRangeException("value", value.ToString(), "OrderName cannot contain more than 255 characters");
if (value != this._ordername){_ordername= value;}}
}
public virtual DateTime OrderDate
{
get { return _orderdate; }
set {if (value != this._orderdate){_orderdate= value;}}
}
public virtual DateTime? ShipDate
{
get { return _shipdate; }
set {if (value != this._shipdate){_shipdate= value;}}
}
public virtual string ShipVia
{
get { return _shipvia; }
set {
if ( value != null && value.Length > 255)
throw new ArgumentOutOfRangeException("value", value.ToString(), "ShipVia cannot contain more than 255 characters");
if (value != this._shipvia){_shipvia= value;}}
}
public virtual string ShipName
{
get { return _shipname; }
set {
if ( value != null && value.Length > 255)
throw new ArgumentOutOfRangeException("value", value.ToString(), "ShipName cannot contain more than 255 characters");
if (value != this._shipname){_shipname= value;}}
}
public virtual string ShipAddress
{
get { return _shipaddress; }
set {
if ( value != null && value.Length > 255)
throw new ArgumentOutOfRangeException("value", value.ToString(), "ShipAddress cannot contain more than 255 characters");
if (value != this._shipaddress){_shipaddress= value;}}
}
public virtual string ShipCity
{
get { return _shipcity; }
set {
if ( value != null && value.Length > 255)
throw new ArgumentOutOfRangeException("value", value.ToString(), "ShipCity cannot contain more than 255 characters");
if (value != this._shipcity){_shipcity= value;}}
}
public virtual string ShipRegion
{
get { return _shipregion; }
set {
if ( value != null && value.Length > 255)
throw new ArgumentOutOfRangeException("value", value.ToString(), "ShipRegion cannot contain more than 255 characters");
if (value != this._shipregion){_shipregion= value;}}
}
public virtual string ShipPostalcode
{
get { return _shippostalcode; }
set {
if ( value != null && value.Length > 255)
throw new ArgumentOutOfRangeException("value", value.ToString(), "ShipPostalcode cannot contain more than 255 characters");
if (value != this._shippostalcode){_shippostalcode= value;}}
}
public virtual string ShipCountry
{
get { return _shipcountry; }
set {
if ( value != null && value.Length > 255)
throw new ArgumentOutOfRangeException("value", value.ToString(), "ShipCountry cannot contain more than 255 characters");
if (value != this._shipcountry){_shipcountry= value;}}
}
public virtual string Status
{
get { return _status; }
set {
if ( value != null && value.Length > 255)
throw new ArgumentOutOfRangeException("value", value.ToString(), "Status cannot contain more than 255 characters");
if (value != this._status){_status= value;}}
}
public virtual DateTime? LastUpdate
{
get { return _lastupdate; }
set {if (value != this._lastupdate){_lastupdate= value;}}
}
public virtual IList<Products> Products
{
get { return _products; }
set {_products= value; }
}
#endregion
#region Equals And HashCode Overrides
/// <summary>
/// local implementation of Equals based on unique value members
/// </summary>
public override bool Equals( object obj )
{
if( this == obj ) return true;
if( ( obj == null ) || ( obj.GetType() != this.GetType() ) ) return false;
OrderItems castObj = (OrderItems)obj;
return ( castObj != null ) &&
this._id == castObj.Id;
}
/// <summary>
/// local implementation of GetHashCode based on unique value members
/// </summary>
public override int GetHashCode()
{
int hash = 57;
hash = 27 * hash * _id.GetHashCode();
return hash;
}
#endregion
}
}
Cannot implicitly convert type 'System.Windows.Forms.BindingSource' to 'System.Collections.Generic.IList'. An explicit conversion exists (are you missing a cast?)