Passing a generic as parameter to DateTime's constructor

As you know PCL doesn't support PersianCalendar or GregorianCalendar class, So I'm using generic to achieve that, In this case consumer can pass the Calendar to the class:

public class DateConvertor<TCalendar> where TCalendar : Calendar
{
        public DateConvertor()
        {
            this.CurentCalendar = Activator.CreateInstance<TCalendar>();
        }

        public TCalendar CurentCalendar
        {
            get;
            private set;
        }

        public DateTime GetDate(string date)
        {
            //....
            var newDate = new DateTime(year, month, day, hour, minute, 0);
            return newDate;
        }
}

So I need pass a new instance of PersianCalendar to DateTime's constructor:

var newDate = new DateTime(year, month, day, hour, minute, 0, new PersianCalendar()); 

Now my question is that How can I do that? For example something like this:

var newDate = new DateTime(year, month, day, hour, minute, 0, CurentCalendar);

Can I pass a generic type as a parameter to DateTime's constructor?

Update:
It seems that DateTime class doesn't have that signature for accepting a new instance of Calendar in Portable Class Library:

public DateTime(
    int year,
    int month,
    int day,
    int hour,
    int minute,
    int second,
    Calendar calendar
)
Jon Skeet
people
quotationmark

As you've noted, DateTime doesn't have the constructor you want in the PCL. However, you can use Calendar.ToDateTime:

return CurrentCalendar.ToDateTime(year, month, day, hour, minute, 0, 0);

As an aside, you could change your generic constraint to include new(), and just call the constructor:

public class DateConverter<TCalendar> where TCalendar : Calendar, new()
{
    public DateConverter()
    {
        this.CurrentCalendar = new TCalendar();
    }
}

Or use my Noda Time project which supports other calendars in a rather more pleasant way, IMO - e.g. a LocalDateTime "knows" the calendar it belongs to, and allows you to convert to a LocalDateTime in another calendar, etc.

people

See more on this question at Stackoverflow