2016-04-06 4 views
0

Ich habe die folgende Klasse:Variable existieren nicht direkt im aktuellen Kontext nach dem Erstellen es

/// <summary> 
///  Represents an implementation of the <see cref="IAspNetCoreLoggingConfigurationBuilder"/> to configure the ASP.NET Core Logging. 
/// </summary> 
public class AspNetCoreLoggingConfigurationBuilder : IAspNetCoreLoggingConfigurationBuilder 
{ 
    #region Properties 

    /// <summary> 
    ///  Gets the <see cref="ILogSource"/> that's used to write log entries. 
    /// </summary> 
    public ILogSource LogSource{ get; private set; } 

    #endregion 

    #region IAspNetCoreLoggingConfigurationBuilder Members 

    /// <summary> 
    ///  Sets the log source that should be used to save log entries. 
    /// </summary> 
    /// <param name="logSource">The source </param> 
    public void SetLogSource(ILogSource logSource) 
    { 
     LogSource = logSource; 
    } 

    #endregion 
} 

Ich habe auch ein Verfahren, in dem ich eine Instanz dieser Klasse zu erstellen:

/// <summary> 
///  Adds logging to the <see cref="IApplicationBuilder"/> request execution pipeline. 
/// </summary> 
/// <param name="app">The <see cref="IApplicationBuilder"/> to configure the application's request pipeline.</param> 
/// <param name="configuration">Builder used to configure the ASP.NET Core Logging.</param> 
/// <returns>A reference to this instance after the operation has completed.</returns> 
public static IApplicationBuilder UseAspNetCoreLogging(this IApplicationBuilder app, Action<IAspNetCoreLoggingConfigurationBuilder> configuration) 
{ 
    var aspNetLoggerConfiguration = new AspNetCoreLoggingConfigurationBuilder(); 

    configuration(aspNetLoggerConfiguration); 

    // Add the registered ILogSource into the registered services. 
    _services.AddInstance(typeof (ILogSource), aspNetLoggerConfiguration.LogSource); 

    // The entire configuration for the middleware has been done, so return the middleware. 
    return app.UseMiddleware<AspNetCoreLoggingMiddleware>(); 
} 

Hinweis In der ersten Zeile erstelle ich eine Instanz der Klasse. Wenn ich jedoch diese Variable in einer Uhr überprüfe, bekomme ich, wenn sich mein Cursor in der Zeile configuration(aspNetLoggerConfiguration); befindet, dass die Variable im aktuellen Kontext nicht existiert.

Erstellen einer Instanz der Variablen funktioniert, wenn Sie es direkt im Überwachungsfenster tun.

Jeder hat eine Ahnung?

P.S. Es ist ein DNX-Projekt, das ich in xUnit testen werde. Der Code wird im Debug-Modus ausgeführt.

+0

Erhalten Sie einen Fehler zur Laufzeit? –

+0

Beim Debuggen oder beim Ausführen der Anwendung ja. Es wird jedoch richtig gebaut. – Complexity

+0

haben Sie versucht, die Methode öffentlich zu machen? – jdweng

Antwort

0

Das ist keine Laufzeit und kein Kompilierfehler. Es ist ein Problem von Visual Studio nicht in der Lage zu sein, das Objekt in einem Debug-Fenster zu zeigen, da es ein Laufzeit-Objekt (so etwas) ist.

Ein weiteres Auftreten dieses Problems ist in einem Client wcf-service. Erstelle einen neuen Serviceclient Client und versuche im Watch-Fenster client.InnerChannel anzuzeigen. Es wird nicht funktionieren. Sie können jedoch ein temp-Objekt (bool, string, etc ..) erstellen und den gewünschten Wert in diesen schreiben, um Ihren Wert zu sehen.

Sie sollten die LogSource im tmpLog sehen, wenn sich Ihre Maus darüber befindet.

+0

Ich habe gerade die obige Zeile nach der Definition hinzugefügt und ich bekomme "tmpLog existiert nicht im aktuellen Kontext. – Complexity

+0

Zum Testen. Ich habe diese Zeilen als erste in einem xUnit Komponententest:' var loggingConfiguration = new AspNetCoreLoggingConfigurationBuilder(); var demo = loggingConfiguration; '. Vermutung, beide Eigenschaften sind leer. Es ist wirklich meine Nüsse. Wenn ich einen leeren Konstruktor im' AspNetCoreLoggingConfigurationBuilder' platzieren, wird der Code ausgeführt, ich bin steppin g im Konstruktor jedoch ist der Wert beim Zurückgeben null. – Complexity

+0

Von dem, was du mir erzählst, kann ich nur raten, was ein anderes mögliches Problem sein könnte, aber um ehrlich zu sein, ich habe keine Ahnung, warum dein Programm sich so verhält. –

Verwandte Themen