Beim Konvertieren meiner .NET 4.5
-Bibliothek in .NETStandard v1.6
lief ich in einem fehlgeschlagenen Komponententest, der zuvor bestanden hat.Unterschied in Expression.Subtract für DateTime zwischen .NET Core und .NET Framework
geortet ich das Problem auf die folgenden drei Codezeilen:
ParameterExpression arg1 = Expression.Parameter(typeof(DateTime), "arg1");
ParameterExpression arg2 = Expression.Parameter(typeof(DateTime), "arg2");
var test = Expression.Subtract(arg1, arg2);
Dieser Ausdrucksbaum für .NET 4.5
kompiliert, sondern löst eine InvalidOperationException
in .NETStandard v1.6
:
Der Binäroperator Subtract nicht definiert für die Typen 'System.DateTime' und 'System.DateTime'.
jedoch für beide Ziele der folgende Code funktioniert:
DateTime one = new DateTime();
DateTime two = new DateTime();
TimeSpan difference = one - two;
Ich würde so die Ausdrucksbäume erwarten auch für .NET-Core zu kompilieren? Mache ich etwas falsch oder is this a bug in .NET Core?
Ich habe gerade versucht mit konstanten Ausdrücken ('Expression.Constant (DateTime.Now)') für die das gleiche auftritt. –
Von [ein kurzer Blick auf den Quellcode] (https://github.com/dotnet/corefx/blob/release/1.0.0-rc2/src/System.Linq.Expressions/src/System/Linq/Expressions/ BinaryExpression.cs # L758), 'GetUserDefinedBinaryOperator' scheint' null' zurückzugeben. –