Как к выражению приведения типа <Func <T, DateTime>> к Выражению <Func <T, объект>>

Я решил эту проблему! Поэтому перед сборкой проекта измените

static string[] Scopes = { CalendarService.Scope.CalendarReadonly };

на

static string[] Scopes = { CalendarService.Scope.Calendar };

. Если вы уже создали решение, удалите файл credentials.json и перезагрузите его. Код для добавления события приведен здесь:

    var ev = new Event();
    EventDateTime start = new EventDateTime();
    start.DateTime = new DateTime(2019, 3, 11, 10, 0, 0);

    EventDateTime end = new EventDateTime();
    end.DateTime = new DateTime(2019, 3, 11, 10, 30, 0);


    ev.Start = start;
    ev.End = end;
    ev.Summary = "New Event";
    ev.Description = "Description...";

    var calendarId = "primary";
    Event recurringEvent = service.Events.Insert(ev, calendarId).Execute();
    Console.WriteLine("Event created: %s\n", e.HtmlLink);

Это моя первая попытка использования Google API, поэтому не судите меня;) Надеюсь, однажды это кому-нибудь поможет!

58
задан antonioh 8 April 2009 в 09:50
поделиться

1 ответ

Вы не можете просто разыгрывать между ними, так как они ' не то же самое. Тем не менее, вы можете эффективно добавить преобразование в дерево выражений:

using System;
using System.Linq.Expressions;

class Test
{
    // This is the method you want, I think
    static Expression<Func<TInput,object>> AddBox<TInput, TOutput>
        (Expression<Func<TInput, TOutput>> expression)
    {
        // Add the boxing operation, but get a weakly typed expression
        Expression converted = Expression.Convert
             (expression.Body, typeof(object));
        // Use Expression.Lambda to get back to strong typing
        return Expression.Lambda<Func<TInput,object>>
             (converted, expression.Parameters);
    }

    // Just a simple demo
    static void Main()
    {
        Expression<Func<string, DateTime>> x = text => DateTime.Now;
        var y = AddBox(x);        
        object dt = y.Compile()("hi");
        Console.WriteLine(dt);
    }        
}
74
ответ дан Jon Skeet 24 November 2019 в 18:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: