I want to initialize an c# array. I don't know in advance how many values I am going to store on it. I know that this number will be between 0 and 5.
Is this the best approach to do this?
private CompiledRuleMethod CompileRuleMethod(Rule r)
{
int sizeParameters = 0;
if (r.Param1 != "") sizeParameters++;
if (r.Param2 != "") sizeParameters++;
if (r.Param3 != "") sizeParameters++;
if (r.Param4 != "") sizeParameters++;
if (r.Param5 != "") sizeParameters++;
object[] parameters = new object[sizeParameters];
if (r.Param1 != "") parameters[0] = r.Param1;
if (r.Param2 != "") parameters[1] = r.Param2;
if (r.Param3 != "") parameters[2] = r.Param3;
if (r.Param4 != "") parameters[3] = r.Param4;
if (r.Param5 != "") parameters[4] = r.Param5;
return new CompiledRuleMethod(DelegateFactory.Create(typeof(RuleMethod).GetMethod(r.MethodName)),parameters);
}
I am pretty sure that isn't.
parametersis aobject[]whereas theParamXs are all strings?ParamX, properties fromr, really look alike? Could we use reflexion to find all properties ofrthen filter, and map the value to an array? With some like foreach(property p in object)