public override void PopulateWithArgs(string[] stringArgs)
{
Contract.Requires(stringArgs != null);
Contract.Requires(stringArgs.Length >= 3);
Contract.Requires(Contract.ForAll(stringArgs, s => EventContractHelper.TryParseInt(s) && int.Parse(s) >= 1));
Contract.Requires(stringArgs.Skip(2).ToArray().Length == int.Parse(stringArgs[1]));
PlayerId = int.Parse(stringArgs[0]);
int numberOfHeroCards = int.Parse(stringArgs[1]);
HeroCardIds = new int[numberOfHeroCards];
string[] cardStrings = stringArgs.Skip(2).ToArray();
for (int i = 0; i < cardStrings.Length; i++)
{
HeroCardIds[i] = int.Parse(cardStrings[i]);
}
}