CodeBeam.MudBlazor.Extensions icon indicating copy to clipboard operation
CodeBeam.MudBlazor.Extensions copied to clipboard

Exception thrown when setting custom Comparer on MudSelectExtended

Open tta-cap opened this issue 1 year ago • 1 comments
trafficstars

When attempting to set a custom EqualityComparer on MudSelectExtended, I get the following exception: Unhandled exception rendering component: Unable to set property 'Comparer' on object of type 'MudExtensions.MudSelectExtended`

To reproduce, use the following in the mudExtensions playground:

@* Required *@
<MudThemeProvider />
<MudPopoverProvider />
<MudDialogProvider />
<MudSnackbarProvider />

@* Example *@
<MudSelectExtended
    ToStringFunc="person => person.Name"
    ItemCollection="_list"
    Comparer=_comparer>
</MudSelectExtended>

@code {

    private IList<TestPerson> _list = new List<TestPerson>()
    {
        new TestPerson() { Name = "Test1", ID = 1 },
        new TestPerson() { Name = "Test2", ID = 2 }
    };

    private EqualityComparer<TestPerson> _comparer = EqualityComparer<TestPerson>.Create(
        (person, testPerson) => person?.ID == testPerson?.ID, 
        person => person.ID.GetHashCode());

    private class TestPerson
    {
        public string Name { get; set; }
        public int ID { get; set; }
    }
}

The cause appears to be from the setter for the Comparer property, where _selectedValues is used for a hashSet, even if it has not yet been initialized.

I think this issue also affect the MudComboBox, though I haven't tested enough to confirm it.

tta-cap avatar Sep 10 '24 12:09 tta-cap