在C#中为基元类型创建包装器的最佳方法是什么?

在C#中为基元类型创建包装器的最佳方法是什么?,c#,shell,casting,command,C#,Shell,Casting,Command,我正在尝试制作一个游戏(使用Unity 3D引擎),它使用终端/外壳与(几乎)所有东西进行交互。这也是很多问题出现的地方,因为实现必须是严格、灵活、简单和可扩展的 目前,我对终端的美学并不感兴趣——只是对shell的功能感兴趣——因此我专注于创建一个命令类型,该命令类型可以从一个字符串实例化,该字符串被解析为一个通用参数类型,然后被转换为一个内部类型(如string,int,等等) 下面,我提供了命令类的代码。我真的很努力,但我一直在尝试将其解析为最终可以执行的操作。问题是Argument类中的

我正在尝试制作一个游戏(使用Unity 3D引擎),它使用终端/外壳与(几乎)所有东西进行交互。这也是很多问题出现的地方,因为实现必须是严格、灵活、简单和可扩展的

目前,我对终端的美学并不感兴趣——只是对shell的功能感兴趣——因此我专注于创建一个命令类型,该命令类型可以从一个字符串实例化,该字符串被解析为一个通用参数类型,然后被转换为一个内部类型(如
string
int
,等等)

下面,我提供了
命令
类的代码。我真的很努力,但我一直在尝试将其解析为最终可以执行的操作。问题是
Argument
类中的
ArgumentType
不希望被强制转换,我没有找到任何好的解决方案。谁能帮我解决这个问题或给我一个工作方向?提前谢谢你

namespace-Terminal.shell
{
公共抽象类命令
{
私人只读操作程序;
私人只读命令手册;
公共IEnumerable解析(字符串行)
{
for(int i=0;i
CommandManual
类只包含两个有趣的属性:

内部只读参数[]RequiredArguments;
内部只读参数[]可选参数;
参数
类:

namespace-Terminal.shell
{
公共结构参数
{
私有只读字符串标识符;
私有只读参数类型;
公共字符串标识符=>this.Identifier;
公共ArgumentType=>this.Type;
// ...
}
}
我创建了
ArgumentType
ArgumentType
:第一个类似于
枚举
类,可以在任何地方使用,后者用于从输入(字符串)到关联类型的实际转换

namespace-Terminal.shell
{
公共抽象分部类ArgumentType:枚举
{
public static readonly ArgumentType命令=new CommandType();
公共静态只读ArgumentType Boolean=new BooleanType();
公共静态只读ArgumentType String=new StringType();
公共静态只读ArgumentType Range=new RangeType();
受保护的ArgumentType(字符串名称、int值)
:base(名称、值){}
//####这出了问题
公共ArgumentType GenericType=>???;
}
公共抽象分部类ArgumentType:ArgumentType
{
受保护的ArgumentType(字符串名称、int值)
:base(名称、值){}
/// 
///尝试在此包装器中强制转换参数的值
///到包含在中的实际基元值。
/// 
///可能包含
///铸造价值。
公共摘要可能是TryCast(字符串输入);
/// 
///将此包装中参数的值强制转换为
///一个实际的原语值或抛出一个错误。
/// 
///价值观
///包含强制转换的值或。
/// 
公共虚拟强制转换(字符串输入)
{
还这个
.TryCast(输入)
.ValueOr(新参数类型例外)(
类型(T),
类型(无效)
));
}
}
}
此泛型枚举类型的实例之一是
IntegerType
类:

namespace-Terminal.shell
{
公共类IntegerType:ArgumentType
{
public IntegerType():base(“integer”,4){
/// 
公共覆盖TryCast(字符串输入)
{
int.TryParse(输入、输出var结果);
返回结果;
}
}
}