2014-01-07 4 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); 
    } 

} 

I неправильно интерпретируйте код при переводе его на более общие термины. Я исправил это. Значит ли это больше смысла?

У меня очень мало опыта со статическими конструкторами, но я инстинкт подскажу, что проблема может быть где-то там.

+2

Ошибка в 'SomeOtherClass.methodThatSetsUtility();' возможно – leppie

+0

Ваша строка 'html = xml =" ";' не нужна, потому что вызов метода сразу после того, как он имеет параметры 'out', которые устанавливают обе эти переменные , –

+0

Я согласен с leppie. Скорее всего, методThatSetsUtility(); возвращает null. –

ответ

0

Я считаю, что нашел проблему. Это происходит в третьей стороне сборки в разделе: // код здесь. Раньше я не включал код в целях безопасности, но я буду работать с третьей стороной для разрешения. Спасибо всем!

0

В примере кода, то SomeDomain свойство никогда не был инициализирован при выполнении следующей строки:

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

В более общем, посмотрите на трассировку стека и/или запустить под отладчиком - вы скоро посмотрите, какая строка не работает и почему.

+0

Желаю, чтобы я мог работать под отладчиком. Это происходит только на сервере клиента, поэтому я могу лучше всего писать записи журнала, чтобы узнать, где это происходит. Заявления журнала темнеют в указанной выше строке. Я не могу получить ничего другого после SomeClass foo = new SomeClass(); – DontThinkJustGo

+0

Что скажет стек? можете ли вы получить зарегистрированную копию трассировки стека при вызове исключения? –

Смежные вопросы