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