Ich verwende gerne die Microsoft.Exchange.WebService API:
C # funktioniert gut
%Vor%F # gibt den Fehler: Der Typ 'NetworkCredential' ist nicht kompatibel mit 'ExchangeCredential'
%Vor%Ich dachte, dass es etwas mit der impliziten Konvertierung zu tun hat, die in der C # API definiert ist. Also habe ich versucht (: & gt;) und downcast (:? & gt;). Ich habe versucht, es explizit zu machen (neues NetworkCredential ...: ExchangeCredentials) und ich habe die referenzierten DLLs überprüft, wie ich in C # nuget direkt und in F # paket verwendet habe. Beide wurden in VS 2015 getestet. In C # ist es .Net 4.5.2 und auch in F #, wenn es in der app.config
nachgeschlagen wird %Vor%Und ich denke, die Verwendung von WebCredentials ist nicht der richtige Weg. Ich möchte einen SecureString und keine Zeichenfolge verwenden und funktioniert in C #. Es ist also wahrscheinlicher, dass ich etwas falsch mit der F # -Syntax gemacht habe, die ich gerne verstehen würde.
Wie Sie bemerkt haben, definiert ExchangeCredentials
eine implizite Konvertierung von NetworkCredentials
nach ExchangeCredentials
, weshalb Ihr Code in C # korrekt funktioniert. Beachten Sie, dass zwischen diesen beiden Dingen keine Vererbungsbeziehung besteht. Daher können Sie die Funktionen upcast ( :>
) und downcast ( :?>
) nicht verwenden.
Implizite Conversions werden in F # als statisches Member mit dem Namen op_Implicit
angezeigt.
Tags und Links f# type-systems exchange-server exchangewebservices