Skip to content

高度な機能

Enum 型のサポート

SelectMultiSelect で Enum 型を使用すると、Enum の値から自動的に項目が生成されます。[Display] 属性を使って表示名をカスタマイズできます:

csharp
using System.ComponentModel.DataAnnotations;

public enum MyEnum
{
    [Display(Name = "First value")]
    First,
    [Display(Name = "Second value")]
    Second,
    [Display(Name = "Third value")]
    Third
}

var value = Prompt.Select<MyEnum>("Select enum value");
Console.WriteLine($"You selected {value}");

MultiSelect の場合:

csharp
var values = Prompt.MultiSelect<MyEnum>("Select enum values");
Console.WriteLine($"You picked {string.Join(", ", values)}");

Unicode サポート

Sharprompt はマルチバイト文字と絵文字をサポートしています。最良の結果を得るには、出力エンコーディングを UTF-8 に設定してください:

csharp
Console.OutputEncoding = Encoding.UTF8;

var name = Prompt.Input<string>("What's your name?");
Console.WriteLine($"Hello, {name}!");

Fluent インターフェース

すべてのプロンプトタイプは Sharprompt.Fluent 名前空間を通じて Fluent インターフェースをサポートしています:

csharp
using Sharprompt.Fluent;

var city = Prompt.Select<string>(o => o.WithMessage("Select your city")
                                       .WithItems(new[] { "Seattle", "London", "Tokyo" })
                                       .WithDefaultValue("Seattle"));

Fluent API はプロパティを設定するための With* メソッドと、コレクション(バリデータなど)に追加するための Add* メソッドを提供しています。

テキストセレクタ

SelectMultiSelect では、項目の表示方法を制御するカスタム関数を提供できます:

csharp
var user = Prompt.Select("Select user", users, textSelector: u => u.Name);

ページネーション

SelectMultiSelectpageSize パラメータによるページネーションをサポートしています:

csharp
var city = Prompt.Select("Select your city",
    new[] { "Seattle", "London", "Tokyo", "New York", "Singapore", "Shanghai" },
    pageSize: 3);

ループ選択

デフォルトでは、選択リストは先頭または末尾に到達するとループします。これはオプションクラスで無効にできます:

csharp
var city = Prompt.Select(new SelectOptions<string>
{
    Message = "Select your city",
    Items = new[] { "Seattle", "London", "Tokyo" },
    LoopingSelection = false
});

Released under the MIT License.