Как я могу получить доступ к списку данных, который находится в объекте отправителя - PullRequest
0 голосов
/ 05 июля 2018
private void TrendicProductClick(object sender, int position)
{
}

Это мой метод, который дает мне отправителя и должность. Я хочу получить _DealList, который находится на стороне "непубличного члена" отправителя. моя иерархия отправителей выглядит примерно так =>

  1. отправитель
    • Base
    • ItemCount
    • Непубличные участники
      • _DealList

Я хочу получить доступ к данным _DealList

1 Ответ

0 голосов
/ 05 июля 2018

Чтобы получить доступ к закрытым свойствам отправителя, как подсказал @Tim, нам нужно использовать Reflection

например. давайте предположим, что тип отправителя MyClass и имеет следующую структуру, тогда вы можете получить свойство, выполнив это. Я предполагаю, что dealList является публичным. В противном случае вы можете использовать Reflection для этого:

class Program
{
    static void Main(string[] args)
    {
        MyClass myObj = new MyClass();
        FooBar(myObj);
    }
    public static void FooBar(object sender)
    {
        Type t = typeof(MyClass);
        var info = t.GetField("deal",BindingFlags.NonPublic | BindingFlags.Instance);
        var dealObject = info?.GetValue(sender);
        var dealListObj = ((DealList) dealObject)?.dealList;
    }
}

public class MyClass
{
    private DealList deal = new DealList();
    public void Foo() { }
}

public class DealList
{
    public List<int> dealList = new List<int>() {2,3};
}
...