Я решил эту проблему! Поэтому перед сборкой проекта измените
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, поэтому не судите меня;) Надеюсь, однажды это кому-нибудь поможет!
Вы не можете просто разыгрывать между ними, так как они ' не то же самое. Тем не менее, вы можете эффективно добавить преобразование в дерево выражений:
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);
}
}