2016-03-08 28 views
3

有一個用於C#編寫的gsscoder的解析器庫(它有它自己的SO標記,我將它添加)。它分析命令行選項getopt風格,即:如何通過gsscoder訪問C#CommandLine解析器中的未綁定參數?

myprogram --foo --bar=baz abc def ghi 

它也有所謂的「綁定」的參數,即獨立的未綁定選項位置參數;在上面的例子中,這些是abcdefghi。不幸的是,the documentation只提到「解析器有辦法處理這些」,但沒有舉例。而我的C#並不那麼尖銳,所以我被大量的源代碼掃描發現它嚇倒了。

有人可以請舉一個例子來解析後如何訪問這些未綁定的參數嗎?

回答

4

使用ValueList[Attribute](見docs on CodePlex):

不是由一個選擇捕獲的每個值可以包括從System.Collections.Generic.IList衍生字符串的集合英寸

顯然,此屬性沒有名稱,並直接從System.Attribute派生。 這是目前唯一的例外,但不排除在未來它會有類似的情況。

實施例(從上面鏈接頁):

class Options 
{ 
    // ... 
    [ValueList(typeof(List<string>), MaximumElements = 3)] 
    public IList<string> Items { get; set; }; 
    // ... 
} 

其中ValueList

  1. 必須分配給IList<string>類型的屬性。
  2. 構造函數必須接受從IList<string>派生的類型爲List<string>
  3. 如果MaximumElements屬性設置爲大於0的數字,則解析器將在超出限制時失敗。
  4. MaximumElements設置爲0意味着您不接受與選項分離的值。
  5. MaximumElements(-1)的默認隱式設置允許無限數量的值。