2013-03-15 44 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