Когда вы используете await, функция, выполняющая ваш код, должна быть помечена как асинхронная, что-то вроде:
async function _your_function_name() {
...
let accounts = await web3.eth.getAccounts()
let balance = await instance.getBalance(accounts[0])
...
}
Вы можете также подумать об использовании асинхронного IIFE, чтобы избежать пометки всей функции как асинхронной, даже если мне не хватает веской причины для этого:
...
let accounts
let balance
(async () => {
accounts = await web3.eth.getAccounts()
balance = await instance.getBalance(accounts[0])
})()
...
Вот более подробное объяснение: https://developer.mozilla.org/en-US/docs/Web/JavaScript/ Справка / отчетность / async_function
Да.
Type type = typeof(TheClass);
FieldInfo info = type.GetField(name, BindingFlags.NonPublic | BindingFlags.Static);
object value = info.GetValue(null);
Это для поля. Для свойства, изменение type.GetField
к type.GetProperty
. Можно также получить доступ к закрытым методам подобным способом.
Как указано выше можно, вероятно, использовать System.Type::GetMembers()
с BindingFlags
::NonPublic | BindingFlags::Static
, но только если у Вас есть право ReflectionPermission
.
Я предполагаю, что кто-то должен спросить, является ли это хорошей идеей или нет? Это создает зависимость от частной реализации этого статического класса. Частная реализация подвержена изменениям без любого уведомления, данного людям, использующим Отражение для доступа к частной реализации.
, Если эти два класса предназначены для сотрудничества, считайте создание поля внутренним и добавление блока сотрудничающего класса в [assembly:InternalsVisibleTo] атрибут.
Если у Вас есть полное доверие, необходимо быть в состоянии сделать:
Type t = typeof(TheClass);
FieldInfo field = t.GetField("myFieldName", BindingFlags.NonPublic | BindingFlags.Static);
object fieldValue = field.GetValue(myObject);
Однако при выполнении этого в системе без полного доверия вызов GetField перестанет работать, и это не будет работать.
Попробуйте что-то вроде этого:
Type type = typeof(MyClass);
MemberInfo[] members = type.GetMembers(BindingFlags.NonPublic | BindingFlags.Static);
я думал бы, что это, должен работать.