给定:
- 参数数量
- 每个参数的类型
List<string> args
假设我有一个如下所示的 List<string> args
:
List<string> args = new List<string> { "1", "helloworld", "3" }
我想要对args
进行以下验证,根据我的代码需要调用其中任何一个方法。
验证方法:
public bool isValidOneString(List<string> args)
{
return args.Count() == 1;
}
public bool isValidTwoStrings(List<string> args)
{
return args.Count() == 2;
}
public bool isValidThreeStrings(List<string> args)
{
return args.Count() == 3;
}
public bool isValidOneStringTwoFloat(List<string> args)
{
bool isValid = args.Count() == 2;
if(!isValid) return false;
float valueAfterParse;
isValid = float.TryParse(args[1], out valueAfterParse);
return isValid;
}
public bool isValidOneFloatTwoDoubleThreeInt32(List<string> args)
{
bool isValid = args.Count() == 3;
if(!isValid) return false;
float valueAfterParse;
isValid = float.TryParse(args[0], out valueAfterParse);
if(!isValid) return false;
Double valueAfterParse;
isValid = Double.TryParse(args[0], out valueAfterParse);
if(!isValid) return false;
Int32 valueAfterParse;
isValid = Int32.TryParse(args[0], out valueAfterParse);
if(!isValid) return false;
return isValid;
}
问题: 正如您所看到的,我最终将拥有无限数量的验证方法。 是否有一种方法可以只使用一个验证方法,就像下面的例子一样?(它可以处理所有可能的情况)
public bool isValid(List<string> args, int totalExpectedCountOfArgs, List<string> typesOfEachArg)
{
bool isValid = args.Count() == totalExpectedCountOfArgs;
if(!isValid) return false;
int i = 0;
foreach(string dataType : typesOfEachArg) {
isValid = typeOf(dataType).TryParse(args[i], out typeOf(dataType)); //I AM GETTING ERROR HERE BECAUSE I DONT KNOW HOW TO GENERIFY THIS
if(!isValid) return false;
i++;
}
return true;
}
那么我只需要调用上述方法 isValid(args, 3, List<string>{"float", "Int32", "Double"})
吗?但是我在我的泛型方法中遇到了错误,有人知道如何以通用且动态的方式验证数据类型吗?