Если вы хотите перечислить контейнеры в учетной записи хранения с токеном доступа, вы можете обратиться к приведенной ниже команде, я использую приложение AD v1, оно отлично работает на моей стороне.
# Get token for Azure Resource Manager API
$Body = @{
'resource' = 'https://management.azure.com/'
'client_id' = ''
'grant_type' = 'client_credentials'
'client_secret' = ""
}
$params = @{
ContentType = 'application/x-www-form-urlencoded'
Headers = @{'accept' = 'application/json'}
Body = $Body
Method = 'Post'
URI = 'https://login.microsoftonline.com//oauth2/token?api-version=1.0'
}
# Get token
$token = Invoke-RestMethod @params
$RestAPIParams = @{
Uri = "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Storage/storageAccounts//blobServices/default/containers?api-version=2018-03-01-preview"
Method = "Get"
Verbose = $true
Headers = @{
'authorization' = "Bearer $($token.access_token)"
}
}
$result = (Invoke-RestMethod @RestAPIParams).value
Результат теста :
Свойства установлены для Имени и Возраста после того, как конструктор 'общедоступный Человек ()' закончил работать.
Person person = new Person { Name = "David", Age = "29" };
эквивалентно
Person tempPerson = new Person()
tempPerson.Name = "David";
tempPerson.Age = "29";
Person person = tempPerson;
Так, в конструкторе Возраст еще не будет становиться 29.
(tempPerson уникальное имя переменной, которое Вы не видите в своем коде, который не столкнется с другими экземплярами Человека, созданными таким образом. tempPerson необходим для предотвращения проблем многопоточности; его использование гарантирует, что новый объект не становится доступным никакому другому потоку, пока конструктор не был выполнен и после того, как все свойства были инициализированы.)
Если Вы хотите смочь управлять свойством Age в конструкторе, то я предлагаю, чтобы Вы создали конструктора, который берет возраст в качестве аргумента:
public Person(string name, int age)
{
Name = name;
Age = age;
// Now do something with Age
int x = Age;
// ...
}
Ваша строка кода идентична:
Person person = new Person() { Name = "David", Age = "29" };
который идентичен:
Person person = new Person();
person.Name = "David";
person.Age = "29";
Как видете; когда конструктор выполняется, Age
еще не установлен.
Отметьте, как важная техническая деталь, что:
Person person = new Person { Name = "David", Age = "29" };
эквивалентно:
Person <>0 = new Person(); // a local variable which is not visible within C#
<>0.Name = "David";
<>0.Age = "29";
Person person = <>0;
но не эквивалентно:
Person person = new Person();
person.Name = "David";
person.Age = "29";
Технически, этот код:
Person person = new Person { Name = "David", Age = 29 };
идентично этому коду:
Person tmpPerson = new Person();
tmpPerson.Name = "David";
tmpPerson.Age = 29;
Person person = tmpPerson;
который немного отличается, чем, что отправили другие:
Person person = new Person();
person.Name = "David";
person.Age = 29;
Это различие крайне важно, если Ваше приложение использует многопоточность.
Похоже, что Вы пытаетесь получить доступ Age
в конструкторе объекта. Объектные значения инициализатора не будут установлены, пока конструктор не выполнился.
Попробуйте это:
Person person = new Person { Name = "David", Age = 29 };
int x = person.Age;
РЕДАКТИРОВАНИЕ в ответ на комментарий
Если Вам нужен доступ к Age
в конструкторе самостоятельно затем необходимо будет создать явного конструктора с обязательными параметрами и использование это вместо объектного синтаксиса инициализатора. Например:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public Person(string name, int age)
{
Name = name;
Age = age;
int x = Age; // will be 29 in this example
}
}
Person person = new Person("David", 29);
Ну, как другие сказали, конструктор без параметров выполнялся сначала, следовательно Ваше затруднительное положение.
Я действительно должен спросить однако, если Вы установили поле вместо автоматического свойства для Вашей переменной Возраста?
public class Person
{
private int _age;
public int Age
{
get { return _age; }
set { _age = value; }
}
}
Вы могли использовать _age
вместо x
если это достаточно, или если действительно необходимо использовать x
:
public class Person
{
private int _age;
private int x;
public int Age
{
get { return _age; }
set
{
_age = value;
x = _age;
}
}
}
Какой бы ни является более соответствующим.