Создайте заголовочный файл из COM TLB

public static string RelativeDate(DateTime theDate)
{
    Dictionary<long, string> thresholds = new Dictionary<long, string>();
    int minute = 60;
    int hour = 60 * minute;
    int day = 24 * hour;
    thresholds.Add(60, "{0} seconds ago");
    thresholds.Add(minute * 2, "a minute ago");
    thresholds.Add(45 * minute, "{0} minutes ago");
    thresholds.Add(120 * minute, "an hour ago");
    thresholds.Add(day, "{0} hours ago");
    thresholds.Add(day * 2, "yesterday");
    thresholds.Add(day * 30, "{0} days ago");
    thresholds.Add(day * 365, "{0} months ago");
    thresholds.Add(long.MaxValue, "{0} years ago");
    long since = (DateTime.Now.Ticks - theDate.Ticks) / 10000000;
    foreach (long threshold in thresholds.Keys) 
    {
        if (since < threshold) 
        {
            TimeSpan t = new TimeSpan((DateTime.Now.Ticks - theDate.Ticks));
            return string.Format(thresholds[threshold], (t.Days > 365 ? t.Days / 365 : (t.Days > 0 ? t.Days : (t.Hours > 0 ? t.Hours : (t.Minutes > 0 ? t.Minutes : (t.Seconds > 0 ? t.Seconds : 0))))).ToString());
        }
    }
    return "";
}

я предпочитаю эту версию для ее краткости и способность добавить в новых точках галочки. Это могло инкапсулироваться с Latest() расширение Промежутка вместо того длинного 1 лайнера, но ради краткости в регистрации, это сделает. Это фиксирует час назад, 1 час назад, путем обеспечения часа, пока 2 часа не протекли

5
задан teleball 22 July 2009 в 03:32
поделиться

2 ответа

Нашел (по прихоти). Программа OLE / COM Viewer позволяет сохранять файл TLB как файл заголовка, C или IDL! Очень круто! Спасибо!

7
ответ дан 14 December 2019 в 04:44
поделиться

Я не уверен почему вы не хотите использовать команду импорта. это гарантирует, что каждый раз при компиляции кода вы получите заголовок, соответствующий библиотеке COM.

в противном случае вы рискуете использовать устаревший заголовок, если забудете вручную сгенерировать заголовок.

1
ответ дан 14 December 2019 в 04:44
поделиться