So let's say you want to create a reminder for 12 AM Monday. I'd first create a method to find out first "occurrence" of Monday in the future, something like this:
private DateTime getFirstDate(DayOfWeek day, TimeSpan time)
{
DateTime date = DateTime.Today;
while(date.DayOfWeek != day)
date.AddDays(1);
return new DateTime(date.Year,date.Month,date.Day,time.Hours,time.Minutes,time.Seconds);
}
And then use it in your code like this:
r.BeginTime = getFirstDate(DayOfWeek.Monday, new TimeSpan(12,0,0));
It only creates a reminder for the closest Monday, but you can do the same thing when this reminder is triggered- create one for the next Monday.