2009-10-07 3 views
0

Ma question est essentiellement ceci:Définition des propriétés en classe Une fois, l'accès à partir d'un autre

Si je mets des données dynamiques d'une classe, puis-je accéder à ces mêmes données d'une autre classe ? Ci-dessous la pseudocode approximative de ce que je suis en train de faire:

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

} 

Et, je le ci-dessous:

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; 
     } 
} 

Puis-je accéder aux valeurs définies dans SomeClass de SomeOtherClass tel que:

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(); 

    } 

} 

Merci pour vos pensées ...

Répondre

0

Vous pouvez accéder à la Membe rs (ID, Name) pour ces propriétés, puisque vous les avez déclarées publiques.

Quand vous dites « Personne », vous faites référence à un type - le type de personne.

Pour accéder à un membre de une personne spécifique, vous devez utiliser une instance de Person.

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

Cependant, dans votre exemple, vous devrez fournir une collection spécifique d'instances de « personne » à votre méthode SomeOtherClass. Quelque chose comme:

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(); 
    } 
} 

Vous pouvez ensuite utiliser ce quelque part ailleurs, comme:

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); 
} 
+0

Votre message a été très utile, merci. Cependant, je suis toujours accroché sur une partie particulière - est-il possible d'accéder à l'ensemble de données en classe 1 du contexte de la classe 2? J'ai un codebehind page.aspx.cs qui définit les données dans une boucle: Liste personne = nouvelle Liste (); for (i = 0; i <= Request.Name.Count - 1; i ++) { person.Add (nouvelle personne (Request.ID [i], Request.Name [i])); } Ensuite, chaque fois que mon service Web est appelé, je veux être en mesure de retourner la liste des personnes à données quel que soit le point dans la boucle les données est appelée: Liste IPeopleService.GetPeople() { // Je suis toujours perdu ici } –

+0

Est-il possible de le faire? Définir les données de mon code derrière, puis accéder aux données "comme il est en train d'être défini" d'une autre classe pour obtenir une mise à jour des progrès de toutes sortes? Ou, y a-t-il une meilleure façon d'aborder cela? Votre aide est grandement appréciée. –

+0

Eh bien, si vous essayez d'y accéder «comme son être ensemble », à savoir: exactement en même temps à partir d'un autre thread, il est possible, mais vous aurez besoin de se pencher sur l'aide d'un mécanisme de verrouillage pour protéger vos données . Vous aurez besoin d'avoir un service partagé, cependant, afin que vous puissiez avoir accès à la liste - mais aussi longtemps que vous le faites, il devrait fonctionner correctement. –

Questions connexes