2013-03-15 77 views
3

我在Object类型的对象中有一个'System.Windows.Documents.TextSegment'类型的对象。 TextSegment-Struct我不能在我的代码中使用,因为它是.net框架的内部代码。通过反射访问TextSegment的值

我想要做的是访问TextSegment类型的对象中的开始和结束属性。我试着用以下代码反思:

// 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的值?

+0

可以尝试像下面这样'VAR值1 = segments.GetType()的GetProperties()FirstOrDefault(P => p.Name == yourPropertyName);' – MethodMan 2013-03-15 14:22:42

+0

没有,这不工作。我得到null为value1 – Tomtom 2013-03-15 14:27:28

+0

我只是意识到你想FieldInfo看看这个Stackoverflow发布我正在考虑PropertyInfo http://stackoverflow.com/questions/5090224/reflection-get-type-of-fieldinfo-object – MethodMan 2013-03-15 14:28:31

回答

2

该代码环a bell;)...

你有一个错字(在的BindingFlags结束失踪支架),和的BindingFlags的,你只需要实例和非公开的,但我不能找到一个真正的问题。

也许你需要提供更多的代码,因为我已经确认并能正常工作对我来说:

enter image description here

是否检查的价值其实不为空?

enter image description here

+0

我看到跟你一模一样。但我如何存储这个?我无法创建TextPointer或其他东西的对象。我如何获得开始和结束的值到一个属性。这就是问题...... :( – Tomtom 2013-03-23 10:12:12

+0

我不太明白,如果value1出现在调试器中,那么你已经拥有了它,不是吗?将它存储在'object'类型的属性中。也许你需要告诉我 – 2013-03-23 12:23:26

+0

是的,当然我可以将Start-Property存储到object类型的属性中,但是我需要访问Start的混凝土值,这是问题所在。它变成了一个对象,我无法访问属性 – Tomtom 2013-03-24 21:41:52