2012-11-20 51 views
2

我正在編寫一個控制檯應用程序來測試一些基本的MS ProjectServer互操作。我可以連接到服務器沒有問題,我試圖重構一個foreach (var project in projectDataSet.Project)我的for (int i = 0; i < projectDataSet.Project.Count; i++)環路之一。什麼是(type1)+(type2)意味着使用GetType()。ToString()?

當我做for時,projectDataSet.Project的類型是SvcProject.ProjectDataSet.ProjectDataTable。所以,我做了以下幾點:

projectClient.ReadProject(projectDataSet.Project[i].PROJ_UID, 
    SvcProject.DataStoreEnum.WorkingStore); 

得到我需要的項目對象。

但是,當我做foreach變化時,對象project的類型是SvcProject.ProjectDataSet+ProjectRow。我不知道如何處理這個問題。這究竟意味着什麼?

回答

2

這意味着type2嵌套在type1

class type1 
{ 
    public class type2 { } 
} 

爲了證明這一點:

foreach (var t in typeof (A).GetNestedTypes(BindingFlags.Public | BindingFlags.NonPublic)) 
    Console.WriteLine(t.FullName); 

class A 
{ 
    private class B 
    { 
    } 

    protected class C 
    { 
    } 

    internal class D 
    { 
    } 

    public class E 
    { 

    } 
} 

輸出:

 
YourAssembly.A+B 
YourAssembly.A+C 
YourAssembly.A+D 
YourAssembly.A+E 
+0

感謝。我如何在foreach循環中訪問E對象的道具?像: var list = new List (); list.Add(new E()); foreach(var myVar在列表中) Console.WriteLine(「{0}」,「我應該在這裏放置什麼來檢索有用的道具?」); –

+1

@BrunoSaboia:對於任何其他'Type',都是這樣。如果你不知道如何,請提出另一個問題,因爲它不在你問的範圍內。 –

+0

好的,謝謝,我正在考慮使用反射,但這是過度殺傷,如果是這樣的話,最好堅持for循環 –