commandlineparser / commandlineparser/commandline
Proposal for handling multiple mutual exclusive sets
- Ngôn ngữ chính
- C#
- Star
- 4.8k
- Fork
- 478
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Mô tả
As probably already discussed in #79 and #93 I would need to specify multiple mutual exclusive sets.
I would suggest to distinguish between multiple sets at an interface level.
For example I have a command that requires either a workspace name or a path to a workspace. The same command expects a connection name or user-host combination:
```csharp
interface IWorkspaceOptions
{
[Option(Required = true, SetName = "fromName")]
string WorkspaceName { get; set; }
[Option(Required = true, SetName = "Path")]
string FromPath { get; set; }
}
interface IConnectionOptions
{
[Option(Required = true, SetName = "fromName")] // not in the same set as IWorkspaceOptions !
string ConnectionName { get; set; }
[Option(Required = true, SetName = "Params")]
string Host { get; set; }
[Option(SetName = "Params")]
string User { get; set; }
}
class Opts : IWorkspaceOptions, IConnectionOptions
{
public string ConnectionName { get; set; }
public string Host { get; set; }
public string User { get; set; }
public string WorkspaceName { get; set; }
public string FromPath { get; set; }
}
```
I would expect the following command lines to be valid:
```
--WorkspaceName MyWorkspace --ConnectionName MyConnection
--WorkspaceName MyWorkspace --Host 1.2.3.4
--WorkspaceName MyWorkspace --Host 1.2.3.4 --User Foo
--FromPath C:\TMP --ConnectionName MyConnection
--FromPath C:\TMP --Host 1.2.3.4
--FromPath C:\TMP --Host 1.2.3.4 --User Foo
```
and the following invalid:
```--WorkspaceName MyWorkspace```
> Missing required connection options
```--ConnectionName MyConnection```
> Missing workspace options
```--WorkspaceName MyWorkspace --ConnectionName MyConnection --User Foo```
> Invalid mixture of mutual exclusive connection options
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Hướng nghiên cứu
Không có tệp mã nguồn, bài kiểm thử hoặc điểm vào nào được nêu tên. Hãy bắt đầu bằng việc xác định phần xử lý hiện có cho Option SetName và loại trừ lẫn nhau, sau đó so sánh hành vi của nó với các ví dụ giao diện và dòng lệnh trong issue này. Hoàn thành có nghĩa là hỗ trợ các tập độc quyền độc lập giữa các giao diện và tạo ra các kết quả hợp lệ và không hợp lệ đã nêu.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- csharp
- Lĩnh vực
- cli
- Loại issue
- Tính năng
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 30/100