Yo veo dos opciones:
- Coges y creas el DateTime con el dia 1 del mes siguiente (mes+1) y haces un AddDay(-1) para obtener el día anterior y que corresponde al último del mes.
- Tener en un array el número de dias de un mes [31,27,31,30,31,30,...] y cuando quieras saber el día harias algo como MaxDias[mes]. El problema es febrero, ya que en los años bisiestos tiene 28 y eso lo tendrías que controlar.
En ambos casos tienes dos situaciones que controlar, en la primera solución es que cuando estas en diciembre, porque no puedes hacer un DateTime con el mes "mes+1" porque no existe mes 13. Y en la solución del array tienes el problema de los años bisiestos (
aunque se puede calcular cuando es bisiesto y cuando no).
Yo optaría por una de estas dos soluciones.