sách gpt4 ai đã đi

Trình phân tích cú pháp dòng lệnh C#: tạo ra BadFormatConversionError khi tùy chọn bool được đưa ra mà không có giá trị

In lại Tác giả: trợ lý lỗi Thời gian cập nhật: 2023-10-22 13:50:45 29 4
mua khóa gpt4 Nike



Tôi đang cố gắng chỉ định một lá cờ bằng cách sử dụng Trình phân tích lệnh thư viện

Tôi đang cố gắng sử dụng thư viện CommandLineParser để chỉ định một cờ


[Tùy chọn('d', "nội dung", Bắt buộc = false, HelpText = "\n (Bắt buộc) Đường dẫn đến tệp nội dung.")]
công khai String? ContentFile { lấy; đặt; }

[Tùy chọn('e', "mở rộng", Bắt buộc = false, Mặc định = false, HelpText = "Có phải là thao tác mở rộng hay không")]
public bool? Mở rộng { lấy; đặt; }

Lệnh thực hiện
\a.exe --mở rộng --nội dung kdssign.deps.json

Thực hiện lệnh\a.exe --extend --content kdssign.deps.json


Nếu tôi di chuyển "--extend" đến cuối thì Execption không được đưa ra nhưng biến Extend vẫn không được thiết lập.

Nếu tôi di chuyển "--extend" đến cuối, Exection sẽ không được kích hoạt, nhưng biến extend vẫn chưa được thiết lập.


Kỳ vọng của tôi là nếu --extend được cung cấp từ dòng lệnh thì nó sẽ được thiết lập mà không cần chờ bất kỳ giá trị nào được cung cấp.

Tôi mong đợi rằng nếu --extend được cung cấp từ dòng lệnh thì nó sẽ tự thiết lập mà không cần chờ bất kỳ giá trị nào được cung cấp.


Thêm câu trả lời

Cái mà trình phân tích cú pháp dòng lệnh? Có rất nhiều trình phân tích cú pháp CLI được viết bằng C#. .NET's own Hệ thống.CommandLine không sử dụng thuộc tính

Trình phân tích dòng lệnh nào? Có nhiều trình phân tích cú pháp CLI được viết bằng C#. System.CommandLine của NET không sử dụng các thuộc tính

Bạn có chắc chắn cờ không được đặt thành mặc định của loại không, tức là vô giá trị? Bạn đã thử với công khai bool Mở rộng? Rốt cuộc, nếu sự vắng mặt của lá cờ có nghĩa là nó SAI, thuộc tính không bao giờ được để giá trị null. BTW ví dụ Quickstart sử dụng public bool Chi tiết { lấy; đặt; } với Bắt buộc=sai để chỉ định một lá cờ. SAI đã là mặc định

Bạn có chắc chắn cờ không được đặt thành giá trị mặc định (null) cho loại này không? Bạn đã thử public bool Extend chưa? Suy cho cùng, nếu việc không có cờ có nghĩa là nó sai, thì thuộc tính đó không bao giờ được để giá trị null. Nhân tiện, ví dụ Quickstart sử dụng public bool Verbose{get; set;} và Required=false để chỉ định cờ. false đã là giá trị mặc định

Tôi nghĩ vấn đề là chỉ thiết lập extend thành nullable. Sau khi tôi xóa tính năng nullable thì nó bắt đầu hoạt động, cảm ơn.

Tôi nghĩ vấn đề là thiết lập extend chỉ có giá trị null. Sau khi tôi xóa chức năng chấp nhận giá trị null thì nó bắt đầu hoạt động, cảm ơn.

Câu trả lời tuyệt vời được đề xuất

Sử dụng công khai bool Mở rộng { lấy; đặt; } thay vì bool. Các cờ trong CommandLineParser được hỗ trợ thông qua bool thuộc tính. Nếu cờ bị thiếu, thuộc tính sẽ mặc định là sai. bool? mặt khác có thể có ba giá trị: mặc định là null, true hoặc false.

Sử dụng public Boolean extends {get; set;} thay vì Boolean. Các cờ trong CommandLineParser được hỗ trợ thông qua thuộc tính boolean. Nếu cờ bị thiếu, thuộc tính này mặc định là sai. La ó? Mặt khác có thể có ba giá trị: giá trị mặc định là null, true hoặc false.


Các ví dụ khởi động nhanh của thư viện hiển thị cách sử dụng cờ:

Ví dụ khởi động nhanh của thư viện cho thấy cách sử dụng cờ:


lớp công khai Tùy chọn
{
[Tùy chọn('v', "chi tiết", Bắt buộc = sai, HelpText = "Đặt đầu ra thành thông báo chi tiết.")]
public bool Chi tiết { lấy; đặt; }
}

void tĩnh Main(string[] args)
{
Parser.Default.ParseArguments(đối số)
.WithParsed(o =>
{
nếu (o. Chi tiết)
{
Console.WriteLine($"Cho phép xuất ra chi tiết. Đối số hiện tại: -v {o.Verbose}");
Console.WriteLine("Ví dụ khởi động nhanh! Ứng dụng đang ở chế độ chi tiết!");
}
khác
{
Console.WriteLine($"Các đối số hiện tại: -v {o.Verbose}");
Console.WriteLine("Ví dụ khởi động nhanh!");
}
});
}

Thêm câu trả lời
29 4 0
Trợ lý lỗi
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com