我在类型为Object的对象中有一个类型为'System.Windows.Documents.TextSegment'的对象。我不能在我的代码中使用TextSegment-Struct,因为它是.net-framework的内部代码。

我想做的是访问TextSegment类型的对象中的Start-Property和End-Property。我通过以下代码反射进行了尝试:

// This object is of type TextSegment
object textSegment = segments[0];
FieldInfo info = textSegment.GetType().GetField("_start", BindingFlags.IgnoreCase |
   BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance| BindingFlags.Static;


现在,我不知道如何访问FieldInfo的值。

我尝试使用以下代码:

object value1 = info.GetValue(segments[0]);
object value2 = info.GetValue(null);


但没有任何效果。

我如何获得TextSegment的价值?

最佳答案

该代码响起a bell;)...

您有一个拼写错误(BindingFlags末尾缺少括号),而在BindingFlags中,您只需要Instance和NonPublic,但我找不到真正的问题。

也许您需要提供更多代码,因为我已经检查过了,这对我来说很好用:



您是否检查过IS的值实际上不为null?

关于c# - 通过反射访问TextSegment的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15434393/

10-10 17:33