Ответ 1
Когда вы создаете компонент Runtime Windows, ваш компонент может использоваться не управляемыми языками, как Javascript или С++. Очевидно, что эти языки не имеют представления о том, как создать правильный System.DateTime, это особый тип .NET.
Таким образом, такие компоненты должны использовать только родные типы WinRT и в противном случае соблюдать ограничения, имеющиеся в WinRT. Одним из таких ограничений, с которыми вы столкнетесь, является то, что WinRT не поддерживает наследование реализации. Это требует, чтобы вы объявили свой класс закрытым.
Собственные типы WinRT очень не похожи на типы .NET. Реальный тип времени выполнения, который может хранить дату, - Windows.Foundation.DateTime. Строка на самом деле является дескриптором HSTRING. Список фактически является IVector. Etcetera.
Излишне говорить, что если вам действительно нужно будет использовать эти родные типы, ваша программа больше не будет похожа на .NET-программу. И вы этого не сделаете, версия .NET 4.5 CLR имеет встроенную версию языка. Код, который автоматически переводит типы WinRT в их эквивалентные типы .NET. Этот перевод имеет несколько грубых краев, некоторые типы не могут быть легко заменены. Но подавляющее большинство из них без проблем.
System.DateTime - это один такой грубый край. Проекция языка Windows.Foundation.DateTime - System.DateTimeOffset. Поэтому просто решите свою проблему, объявив свой метод следующим образом:
public DateTimeOffset Calculate(DateTimeOffset dateTime) {
// etc..
}
Единственное, что стоит отметить, это то, что это требуется только членам, которые может использовать другой код. Публичные участники.