У меня есть следующие:Получение класса свойство при чтении из базы данных
using (SqlCommand cmd2 = new SqlCommand("", dbCon))
{
cmd2.CommandText = @"
SELECT [PCMF04_PCBPocketName_N]
,[PCMF01_PcbConnectorName_N]
,[PCMF03_PCBHeaderName_N]
,[PCMF04_KeyIndex_C]
,[PCMF04_SortOrder_R]
FROM [ArdSqlDev].[dbo].[WPCMF04_PCBPocket]
WHERE
PCMF03_PCBHeaderName_N = @PCMF03_PCBHeaderName_N
Order By
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;
}
}
Я получаю ошибку на линии:
pocket.PcbConnector.ConnectorName = dr.GetString(1);
Ошибка:
Error 2 Property or indexer 'PcbConnector.ConnectorName' cannot be assigned to -- it is read only
Карманный Класс
public partial class PcbPocket : IEquatable<PcbPocket>, IComparable<PcbPocket>, IComparable
{
public PcbPocket(string PocketName)
{
_PocketName = PocketName;
}
private string _PocketName = string.Empty;
public string PocketName
{
get { return _PocketName; }
set { _PocketName = value; }
}
private string _KeyIndex = string.Empty;
public string KeyIndex
{
get { return _KeyIndex; }
set { _KeyIndex = value; }
}
private int _SortOrder = 0;
public int SortOrder
{
get { return _SortOrder; }
set { _SortOrder = value; }
}
private PcbConnector _PcbConnector = null;
public PcbConnector PcbConnector
{
get { return _PcbConnector; }
set { _PcbConnector = value; }
}
Разъем Класс
общественный частичный класс PcbConnector: IEquatable, IComparable, IComparable {
private Collections.PcbConnectorPinList _PcbConnectorPins = new Collections.PcbConnectorPinList();
public Collections.PcbConnectorPinList PcbConnectorPins
{
get
{
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
{
get { return _ConnectorName; }
}
private string _Supplier = string.Empty;
public string Supplier
{
get { return _Supplier; }
set { _Supplier = value; }
}
private float _Height = 0;
public float Height
{
get { return _Height; }
set { _Height = value; }
}
private float _Width = 0;
public float Width
{
get { return _Width; }
set { _Width = value; }
}
private bool _Active = true;
public bool Active
{
get { return _Active; }
set { _Active = value; }
}
PcbPocket и PbcConnector классы. ConnectorName является свойством класса PbcConnector. Если я проигнорирую эту строку, это значение будет равно null, что не является тем, что сохраняется в базе данных, и даст мне ссылку на объект, а не заданную ошибку. Есть ли способ получить значение ConnectorName для отображения в моем datagridview (в другом файле/форме)?
это помогло бы показать класс' PcbPocket' и в зависимости от того класс 'PcbPocket.PcbConnector'. – Jonesopolis
'PcbPocket.PcbConnector.ConnectorName' - свойство' ReadOnly' или 'get-only': i.e не имеет прикрепленного к нему' set'. Вероятно, существует конструктор для 'PcbPocket' или' PcbPocket.PcbConnector', который делает то, что вы хотите. Или, может быть, 'PcbPocket.PcbConnector.SetConnectorName' и т. Д. –
также вы создаете новый экземпляр PcbConnector, как вы сказали, это класс – mjroodt