Это не статическая часть, это readonly
, которая вас пугает.
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 человек, не стесняйтесь обваляться по всему этому или улучшить этот ответ, используя правильную терминологию.
Ссылки
@billinkc - зафиксировано, что. Но ошибка остается – ShinyBaldHead