Значение типа "строка" не может быть преобразовано, и свойство доступно только для чтения - PullRequest
0 голосов
/ 06 августа 2020

Уже задавали этот вопрос в bitcoin stackexchange, но он может не получить ответа в течение нескольких дней или, может быть, никогда не пытаюсь здесь, и это связано с чем-то базовым c Мне нужно сделать, связанным с инициализацией переменных в vb. net

Может быть, вопрос нуба, но для меня важно понять, как передать значение из текстового поля или строки во что-то еще, что в данном случае является 'bob.PubKey'

Imports NBitcoin

Public Class Form1

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim bob As New Key
        Dim alice As New Key
        Dim satoshi As New Key

        Dim redeemScript As Script = PayToMultiSigTemplate.Instance.GenerateScriptPubKey(2, {bob.PubKey, alice.PubKey, satoshi.PubKey})

        Label1.Text = redeemScript.Hash.GetAddress(Network.TestNet).ToString
        'Console.WriteLine(bob.PubKey)


    End Sub
End Class

N Bitcoin : https://github.com/MetacoSA/NBitcoin

1 Ответ

0 голосов
/ 06 августа 2020

ИЗМЕНИТЬ ---------------------------------------------- ---

Хм ... нет. Не делайте этого.

Изменить PubKey непросто. Свойство PubKey имеет только Getter, а не Setter, поэтому вы не можете просто создать новый с нужным содержимым, а изменение содержимого существующего тоже не вариант.

Я могу ошибаться поскольку я не привык к nBitCoin, но мне кажется, что нельзя переключать pubKey на лету. Единственный вариант - создать экземпляр нового Key с вашим новым PubKey, но новый ключ не будет автоматически разделять все свойства текущего ключа и, следовательно, может вызвать неожиданное поведение.

PubKey создается автоматически, когда он вам нужен, и его значение не должно быть изменено.

(Может быть способ сделать это через класс в папке Secp256k1, но это достаточно глубоко для Я хочу сказать, что должен быть лучший способ решить эту проблему.)

Исходный ответ, который был неправильным

Обычно вы можете использовать оператор присваивания для такого рода операции, например Textbox1.text = bob.PubKey, но проблема в том, что bob - это класс Key, а не String, и .PubKey является классом PubKey, а не String.

Я не знаком с NBitcoin, но готов поспорить, что вы можете это сделать:

Textbox1.text = bob.PubKey.ToString()

, и он покажет ключ или, по крайней мере, строковое представление ключа. Дело в том, что это может быть неприменимо в других контекстах, не так, как вы можете использовать весь объект bob.

Я только что взглянул на исходный код, и кажется, что он должен работают так, как я предполагал. Результат должен быть точно таким же, как и при выполнении

Textbox1.text = bob.PubKey.ToHex()

Удачи!

...