У меня есть два класса A
и B
. Класс A
имеет экземпляр класса B
. Класс A
имеет список классов Foo
с атрибутами Id
и Name
, который является динамическим. Когда вызывается метод Run
класса B
, вычисляется локальная переменная id
в классе B
. Предположим, что значение id
равно 2, мне нужно найти dynamicList
и получить «Two» назад.Как общаться между двумя классами в C#?
dynamicList
может быть изменен сообществом.
class Foo()
{
public Foo(int id, string name)
{
this.Id = id;
this.Name = name;
}
public int Id { get; set; }
public string Name { get; set; }
}
class A
{
public A()
{
this.dynamicList.Add(new Foo(1, "One"));
this.dynamicList.Add(new Foo(2, "Two"));
this.dynamicList.Add(new Foo(3, "Three"));
b = B();
b.Run();
}
public List<Foo> dynamicList = new List<Foo>();
}
class B
{
public void Run()
{
while(true)
{
int id;
string name;
// an event appended this.dynamicList.Add(new Foo(4, "Four"));
// an event appended this.dynamicList.Add(new Foo(5, "Five"));
// some code goes here that gets the value of id 4
id = 4;
// I need to convert the value of '4' to 'Four'
}
}
}
У меня есть два класса
A
иB
. КлассA
имеет экземпляр классаB
. КлассA
имеет список классовFoo
с атрибутамиId
иName
, который является динамическим. Когда вызывается методRun
классаB
, вычисляется локальная переменнаяid
в классеB
. Предположим, что значение изid
- это 2, мне нужно найтиdynamicList
и получить «Два» назад.class Foo() { public Foo(int id, string name) { this.Id = id; this.Name = name; } public int Id { get; set; } public string Name { get; set; } } class A { public A() { this.dynamicList.Add(new Foo(1, "One")); this.dynamicList.Add(new Foo(2, "Two")); this.dynamicList.Add(new Foo(3, "Three")); b = B(); b.Run(); } public List<Foo> dynamicList = new List<Foo>(); } class B { public void Run() { while(true) { int id; string name; // some code goes here that gets the value of id 2 id = 2; // I need to convert the value of '2' to 'Two' } } }
изменить свой метод Выполнить, чтобы принять параметр Список. затем передайте его, когда вы вызываете метод. –
Вам следует избегать публичных переменных. Вместо этого используйте свойство для этого. – chris579
Почему бы вам просто не указать экземпляр A в B в конструкторе B, или нужен только список, просто передайте список. Или еще лучше, изучите зависимость, создайте интерфейс для службы динамического списка B и введите интерфейс в конструктор B. В A вы создаете экземпляр реального исполнителя и передаете его B. B. имеет только зависимость от интерфейс, а не так. –