0x776d-ArgumentMarshalerLib
1.0.0
See the version list below for details.
dotnet add package 0x776d-ArgumentMarshalerLib --version 1.0.0
NuGet\Install-Package 0x776d-ArgumentMarshalerLib -Version 1.0.0
<PackageReference Include="0x776d-ArgumentMarshalerLib" Version="1.0.0" />
paket add 0x776d-ArgumentMarshalerLib --version 1.0.0
#r "nuget: 0x776d-ArgumentMarshalerLib, 1.0.0"
// Install 0x776d-ArgumentMarshalerLib as a Cake Addin
#addin nuget:?package=0x776d-ArgumentMarshalerLib&version=1.0.0
// Install 0x776d-ArgumentMarshalerLib as a Cake Tool
#tool nuget:?package=0x776d-ArgumentMarshalerLib&version=1.0.0
Argument Reader
Description:
With Argument Reader command line arguments can be passed into a .net core application. The standard project assist 3 types of arguments:
- Boolean
- Strings (*)
- Integers (#)
Own argument types can be build with own classes. They need to inherit from the ArgumentMarshalerLib. Libraries are loading dynamically on startup. It is not necessary to recompile the complete solution.
Structure
Arguments parameter = new Arguments("SCHEMA", "ARGUMENT ARRAY", "PATH TO MARSHALER LIBRARIES");
Download all available Packages
Available Marshalers (Standard)
Schema
- Parameter name
- Marshaler type
Example
Arguments parameter = new Arguments("enabled,text*,number#", "...", "...");
Parse Arguments
Boolean:
Arguments.exe -a
static void Main(string[] args)
{
Arguments parameter = new Arguments("a,b", args, @".\Marshaler");
bool a = parameter.GetValue<bool>("a"); // True
bool b = parameter.GetValue<bool>("b"); // False
}
String:
Arguments.exe -a "This is a Text"
static void Main(string[] args)
{
Arguments parameter = new Arguments("a*", args, @".\Marshaler");
string a = parameter.GetValue<string>("a"); // This is a Text
}
Integer:
Arguments.exe -a 1234
static void Main(string[] args)
{
Arguments parameter = new Arguments("a#", args, @".\Marshaler");
int a = parameter.GetValue<int>("a"); // 1234
}
Build your own Marshaler
- Create a new VisualStudio .NET Standard Class Library (??MarshalerLib)
- Link a new project reference ArgumentMarshalerLib.dll (in this repository)
- Write Marshaler (See example code below)
- Copy the TestMarshalerLib.dll to the Marshaler directory in your project
- Implement the ? in your schema (e.g. "mymarshaler?")
using ArgumentMarshalerLib;
using System;
namespace TestMarshalerLib
{
public class TestArgumentMarshaler : ArgumentMarshaler
{
// Only Schemas allowed that are not used (string.Empty, *, # are already used from standard marshalers)
public override string Schema => "?";
public override void Set(Iterator<string> currentArgument)
{
try
{
// If Implementation should use an argument behind the command (e.g. -a "??")
// it is necessary to move the Iterator to the next position
Value = currentArgument.Next();
}
catch (ArgumentOutOfRangeException)
{
throw new TestArgumentMarshalerException(ErrorCode.MISSING);
}
// If no argument behind the command is used just add your value
Value = "This is my personal number";
}
public class TestArgumentMarshalerException : ArgumentsException
{
public TestArgumentMarshalerException(ErrorCode errorCode) : base(errorCode) { }
public override string ErrorMessage()
{
switch (ErrorCode)
{
case ErrorCode.MISSING:
return $"Could not find parameter!";
default:
return string.Empty;
}
}
}
}
}
References
The original Argument Marshaler was written in Java and published by Robert C. Martin in his book Clean Code. This project adapt his implementations and extends it dynamically.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on 0x776d-ArgumentMarshalerLib:
Package | Downloads |
---|---|
0x776d-ArgumentsLib
With Argument Reader command line arguments can be passed into a .net core application. The standard project assist 3 types of arguments: * Boolean * Strings (\*) * Integers (#) Own argument types can be build with own classes. They need to inherit from the ArgumentMarshalerLib. Libraries are loading dynamically on startup. It is not necessary to recompile the complete solution. |
GitHub repositories
This package is not used by any popular GitHub repositories.