2014-01-31 4 views
0

У меня есть статическая переменная -Установите статическую переменную в переменную SSIS - ошибка

static readonly String tableName; 

Я попытался установить его как этот

static readonly String tableName = Dts.Variables["ssisString"].Value.ToString(); 

Я получаю сообщение об ошибке:

An object reference is required for the non-static field, method, or property. 

Но он работает следующим образом:

static String tableName = ""; 

main() 
{ 
    tableName = Dts.Variables["ssisString"].Value.ToString(); 
} 

Почему?

+0

@billinkc - зафиксировано, что. Но ошибка остается – ShinyBaldHead

ответ

1

Это не статическая часть, это readonly, которая вас пугает.

enter image description here

static readonly String tableName; 

    static ScriptMain() 
    { 
     // An object reference is required for the non-static field, method, or property 'Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase.Dts.get' 
     tableName = Dts.Variables["ssisString"].Value.ToString(); 
    } 

    public void Main() 
    { 
     // this works 
     string local = Dts.Variables["ssisString"].Value.ToString(); 

     // a static read only field cannot be assinged to (except in a static constructor or a variable initializer) 
     tableName = Dts.Variables["ssisString"].Value.ToString(); 

     Dts.TaskResult = (int)ScriptResults.Success; 
    } 

Моя плохо помнила информация о статическом, что есть один экземпляр переменной для всех конкретизации класса. Поскольку будет только один экземпляр ScriptMain, вы получаете что-нибудь от перехода static или vs переменной экземпляра?

Anyways, один экземпляр tableName и вы хотите присвоить ему значение. Проблема заключается в том, что вещь, которая имеет значение, которое вы хотите использовать, должна быть создана для предоставления этого значения. Это не проблема, как вы демонстрируете, когда она назначается внутри метода Main.

Это проблема проблема, поскольку свойство readonly позволяет присваивать значение в статическом конструкторе или инициализаторе переменной ... что в моей голове возвращается к проблеме необходимости экземпляра.

Немного .net человек, не стесняйтесь обваляться по всему этому или улучшить этот ответ, используя правильную терминологию.

Ссылки

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