Blazor: передача сложных типов в качестве параметров - PullRequest
0 голосов
/ 08 октября 2019

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

Unable to set property 'story' on object of type 'Shared.ChoiceButton'. The error was: Specified cast is not valid. ---> System.InvalidCastException: Specified cast is not valid

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

Родительский компонент

 <div id="choices">
        @foreach (var choice in story?.currentChoices)
        {
            <ChoiceButton story="@story" choice="@choice" />
        }
 </div>

@code {
    public Story story;

    protected override async Task OnInitializedAsync()
    {
        story = new Story(await Http.GetStringAsync("sample-data/Deamons.json"));
    }
}

Мой новый дочерний компонент (ChoiceButton)

<button class="choiceButton" @onclick="() => Choose(choice)">@choice.text</button>

@code {

    [Parameter] public Story story { get; set; }
    [Parameter] public Choice choice { get; set; }

    void Choose(Choice choice)
    {
        story.ChooseChoiceIndex(choice.index);
        story.ContinueMaximally();
    }
}
...