如何从正在创建/调用它的类中提取构造函数的参数? - C#

时间:2019-09-22 07:53:15

标签: c# wpf

我通过在其构造函数中传递一些参数来调用类(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);
}

在同一类的某处,我想通过检查类的参数来访问类的某些特殊实例。但是我不知道如何通过实例来提取类的参数。  这是我想要的伪代码

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 个答案:

答案 0 :(得分:1)

尽管这表明您正在做些可疑的事情……作为最后的手段,您可以将它们存储在可以访问它们的地方。

例如:

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

答案 1 :(得分:1)

我认为您的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
}

以上是您可以对代码进行的简单更改。