Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何访问发件人对象中的数据列表_C#_.net_C# 3.0 - Fatal编程技术网

C# 如何访问发件人对象中的数据列表

C# 如何访问发件人对象中的数据列表,c#,.net,c#-3.0,C#,.net,C# 3.0,这是我的方法,它给了我发送者和位置。 我想获取发送方“非公共成员”中的_DealList。 我的发件人层次结构如下=> 寄件人 基地 项目数 非公职人员 _交易清单 我想访问\u DealList的数据以访问发件人的私有属性,正如@Tim建议的那样,我们需要使用反射 e、 g.假设发送者的类型是MyClass,并且具有以下结构,那么您可以通过这样做来获取属性。我假设dealList是公开的。否则,您也可以使用反射: private void TrendicProductClick(obj

这是我的方法,它给了我发送者和位置。 我想获取发送方“非公共成员”中的_DealList。 我的发件人层次结构如下=>

  • 寄件人
    • 基地
    • 项目数
    • 非公职人员
      • _交易清单

  • 我想访问
    \u DealList的数据

    以访问发件人的私有属性,正如@Tim建议的那样,我们需要使用
    反射

    e、 g.假设发送者的类型是
    MyClass
    ,并且具有以下结构,那么您可以通过这样做来获取属性。我假设
    dealList
    是公开的。否则,您也可以使用反射:

    private void TrendicProductClick(object sender, int position)
    {
    }
    
    类程序
    {
    静态void Main(字符串[]参数)
    {
    MyClass myObj=新的MyClass();
    FooBar(myObj);
    }
    公共静态void FooBar(对象发送器)
    {
    类型t=类型(MyClass);
    var info=t.GetField(“交易”,BindingFlags.NonPublic | BindingFlags.Instance);
    var dealObject=info?.GetValue(发送方);
    var dealListObj=((DealList)dealObject)?.DealList;
    }
    }
    公共类MyClass
    {
    私有DealList deal=新DealList();
    公共void Foo(){}
    }
    公共类交易列表
    {
    public List dealList=new List(){2,3};
    }
    
    发送者是什么类型的,您能显示该类吗?为什么不将此
    \u DealList
    公开,或者提供一个方法来执行您想要的操作?由于某些原因,我无法将列表公开,这就是为什么您不应该将其公开,但为什么您不能提供一个方法来封装您想要执行的操作?对于你的问题,显而易见的答案是反思。但这应该是最后一次了resort@TimSchmelter如何在我的例子中实现反射?我做了如下操作:var info=sender.GetType().GetField(“_DealList”,BindingFlags.NonPublic | BindingFlags.Instance);var dealObject=info?.GetValue(发送方);
    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};
    }