c# - Retrieving class property when reading from database -
i have following:
using (sqlcommand cmd2 = new sqlcommand("", dbcon)) { cmd2.commandtext = @" select [pcmf04_pcbpocketname_n] ,[pcmf01_pcbconnectorname_n] ,[pcmf03_pcbheadername_n] ,[pcmf04_keyindex_c] ,[pcmf04_sortorder_r] [ardsqldev].[dbo].[wpcmf04_pcbpocket] pcmf03_pcbheadername_n = @pcmf03_pcbheadername_n order pcmf04_pcbpocketname_n"; cmd2.parameters.add("@pcmf03_pcbheadername_n", sqldbtype.nvarchar).value = header.headername; using (sqldatareader dr = cmd2.executereader()) { while (dr.read()) { var pocket = new pcbpocket(dr.getstring(0)); pocket.pocketname = dr.getstring(0); pocket.pcbconnector.connectorname = dr.getstring(1); pocket.keyindex = dr.getstring(3); pocket.sortorder = dr.getint32(4); header._pcbheaderpockets.add(pocket); } return header; } }
i error on line:
pocket.pcbconnector.connectorname = dr.getstring(1);
error:
error 2 property or indexer 'pcbconnector.connectorname' cannot assigned -- read
pocket class
public partial class pcbpocket : iequatable<pcbpocket>, icomparable<pcbpocket>, icomparable { public pcbpocket(string pocketname) { _pocketname = pocketname; } private string _pocketname = string.empty; public string pocketname { { return _pocketname; } set { _pocketname = value; } } private string _keyindex = string.empty; public string keyindex { { return _keyindex; } set { _keyindex = value; } } private int _sortorder = 0; public int sortorder { { return _sortorder; } set { _sortorder = value; } } private pcbconnector _pcbconnector = null; public pcbconnector pcbconnector { { return _pcbconnector; } set { _pcbconnector = value; } }
connector class
public partial class pcbconnector : iequatable, icomparable, icomparable {
private collections.pcbconnectorpinlist _pcbconnectorpins = new collections.pcbconnectorpinlist(); public collections.pcbconnectorpinlist pcbconnectorpins { { return _pcbconnectorpins; } set { _pcbconnectorpins = value; } } public pcbconnector(string connectorname) { _connectorname = connectorname; } public pcbconnector(pcbconnector pcbconnector) { _connectorname = pcbconnector.connectorname; _height = pcbconnector.height; _width = pcbconnector.width; _active = pcbconnector.active; _supplier = pcbconnector.supplier; } private string _connectorname = string.empty; public string connectorname { { return _connectorname; } } private string _supplier = string.empty; public string supplier { { return _supplier; } set { _supplier = value; } } private float _height = 0; public float height { { return _height; } set { _height = value; } } private float _width = 0; public float width { { return _width; } set { _width = value; } } private bool _active = true; public bool active { { return _active; } set { _active = value; } }
pcbpocket , pbcconnector classes. connectorname property of pbcconnector class. if ignore line, value null, not saved in database , give me object reference not set error. there way can retrieve connectorname value show in datagridview (in different file/form)?
you don't have setter on pcbconnector:
private string _connectorname = string.empty; public string connectorname { { return _connectorname; } }
you want:
private string _connectorname = string.empty; public string connectorname { { return _connectorname; } set { _connectorname = value; } }
with said, should note properties can auto-implemented, if you're not concerned default value. example, have:
private int _sortorder = 0; public int sortorder { { return _sortorder; } set { _sortorder = value; } }
this same
public int sortorder { get; set; }
as int
's default value 0 anyways
Comments
Post a Comment