2014-01-07 24 views
2

錯誤新的實例,我可以告訴這些線之一發生:的NullReferenceException而就創建類

SomeClass foo = new SomeClass(); 
foo.getSomeStuff(id1,id2,id3, connectionString, UserName, Password, out html, out xml); 

這裏是SomeClass的基本上看起來像:

public class SomeClass 
{ 
    private static System.AppDomain SomeDomain { get; set; } 
    private static SomeUtility utility { get; set; } 

    static SomeClass() 
    { 
     InitializeSomeClass(); 
    } 


    private static void InitializeSomeClass() 
    { 
     //code here 
     utility = (SomeUtility)SomeDomain.CreateInstanceAndUnwrap(Assembly.GetExecutingAssembly().FullName, "SomeUtility"); 
    } 

    public void getSomeStuff(int id1, int id2, int id3, string connectionString, string UserName, string Password, out string html, out string xml) 
    { 
     html = xml = ""; 
     utility.ExtractContent(id1, id2, id3, connectionString, UserName, Password, out html, out xml); 
    } 

} 

我在將其翻譯爲更一般的術語時誤讀了「規範」。我已糾正它。這是否有意義?

我對靜態構造函數的使用經驗很少,但是我的本能告訴我這個問題可能存在於某處。很快你就會 -

utility = (SomeUtility)SomeDomain.CreateInstanceAndUnwrap(...) 

更一般地,看堆棧跟蹤和/或一個調試器下運行:

+2

錯誤出現在'SomeOtherClass.methodThatSetsUtility();'可能 – leppie

+0

您的代碼行不需要,因爲方法在調用了兩個變量。 –

+0

我同意勒皮。機會是methodThatSetsUtility();返回null。 –

回答

0

我相信我發現了這個問題。它發生在第三方程序集中:「// code here」。爲了安全起見,我之前沒有包含代碼,但我會與第三方合作解決問題。謝謝大家!

0

在你的示例代碼中,SomeDomain財產從來沒有被初始化,當你執行下面的行看哪條線路故障以及爲什麼。

+0

希望我可以在調試器下運行。這隻發生在客戶端的服務器上,所以我可以做的最好的事情就是編寫Log語句來查看它發生的位置。 Log語句在上面提到的行中變暗。在SomeClass foo = new SomeClass()之後,我無法獲得其他任何東西。 – DontThinkJustGo

+0

堆棧跟蹤說什麼?拋出異常時能否獲得堆棧跟蹤的記錄副本? –

相關問題