Как извлечь параметр конструктора из класса, в котором он создается / вызывается?- C # - PullRequest
0 голосов
/ 22 сентября 2019

Я вызываю класс (Usercontrol), передавая некоторые параметры в его конструкторе.Я также сохраняю экземпляр класса в списке для выполнения некоторых пользовательских операций.

// In a Main Class
private List<Point> _pList= new List<Point>(); // Point is a UserControl

private void function(header, tx, rx) 
{
Point pt= new Point(header, tx, rx); // all parameters are string and values are dynamic for each class instance

// some operations

_pList.add(pt);
}

В Somewhere в том же классе я хочу получить доступ к некоторому специальному экземпляру класса, проверив его параметры.Но я не знаю, как извлечь параметры класса по его экземпляру.Вот псевдокод, что я хочу

foreach(var pt in _pList)
{
string header= "something";
string tx = "tx1";
string rx = "rx1";

if(pt.parameter[1]=header && .... ) // just a Pseudo-Code
{
// some tasks
}

}

Пожалуйста, помогите мне, как этого добиться .. Спасибо

Ответы [ 2 ]

1 голос
/ 22 сентября 2019

Я полагаю, что ваш Point выглядит -

public class Point
{
   public string Header{get;set;}
   public string Tx {get;set;}
   public string Rx  {get;set;}

   Public Point(string header,string tx,string rx)
   {
       Header=header;
       Tx=tx;
       Rx=rx;
   }
}

Ваш код остается тем же, что и при создании объектов и добавлении его в список.

Из своего псевдокода обновите его до -

foreach(var pt in _pList)
{
string header= "something";
string tx = "tx1";
string rx = "rx1";

if(pt.Header==header && pt.Tx==tx && pt.Rx==rx) // just a Pseudo-Code
{
// some tasks
}

Это простое изменение, которое вы можете внести в свой код.

1 голос
/ 22 сентября 2019

Хотя это предполагает, что вы делаете что-то подозрительное ... в крайнем случае, вы можете хранить их в месте, к которому у вас есть доступ.

Например:

public class PointContainer
{
    public Point point {get;set;}
    public string header {get;set;}
    public string tx{get;set;}
    //etc
}

И использоватьв вашем списке:

//first create the container:
var pc = new PointContainer() { /* initialize variables */ };
//and put it in your list
_pList.Add(pc);
//your will contain the combination of points and parameters


Обычно вы можете получить доступ к переменным, которые вы передали через сам объект:
var point = new Point(header);
var header = point.Header; //so in your case this public property seems missing
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...