在一个类中设置属性,从另一个类访问

时间:2009-10-07 19:13:02

标签: oop properties get set

我的问题基本上是这样的:

如果我从一个类设置动态数据,我可以从另一个类访问相同的数据 类?下面是我想要做的粗略伪代码:

Public Class Person
{
  public string ID { get; set; }
  public string Name { get; set; }

}

而且,我这样做:

Public Class SomeClass
{

   private void SomeMethod()
   {

        List<Person> p = new List<Person>();

         loop {
           p.Add(id[i], name[i]);
           Timer t = new Timer(); 
          t.Interval = 1000;
         }
}

我可以访问SomeClass中设置的值吗? 来自SomeOtherClass这样:

Public SomeOtherClass
{

  private List<Person> SomeOtherMethod(string id)
  {
      // HERE, THE RESPONSE VALUES MAY CHANGE BASED ON
      // WHERE IN THE LOOP SomeClass.SomeMethod HAS SET
      // THE VALUES IN Person.

      var query = from p in Person
                  where p.ID == id
                  select p;

      return query.ToList();

  }

}

感谢您的想法...

1 个答案:

答案 0 :(得分:0)

您可以访问这些属性的成员(ID,名称),因为您已将它们声明为公共。

当你说“人”时,你指的是一个类型 - 人物类型。

要访问特定人员的成员,您需要使用Person的实例。

Person thePersonInstance = new Person(5, "Joe");
thePersonInstance.ID = 3; // This is fine, since it's public

但是,在您的示例中,您需要在SomeOtherClass中为您的方法提供特定的“Person”实例集合。类似的东西:

Public SomeOtherClass
{

    // You need to provide some collection of Person instances!
    public List<Person> SomeOtherMethod(string id, IEnumerable<Person> people)
    {
        var query = from p in people
              where p.ID == id
              select p;

        return query.ToList();
    }
}

然后您可以在其他地方使用它,例如:

void SomeMethod()
{
      List<Person> people = new List<Person>();
      people.Add(new Person(1, "Name1");
      people.Add(new Person(2, "Name2");

      SomeOtherClass other = new SomeOtherClass();
      List<Person> filteredPeople = other.SomeOtherMethod(1);
 }