c# - निजी सेटर रिलीज़ बिल्ड पर केवल त्रुटि फेंक रहा है



wpf mvvm (1)

यह ज्ञात बग है जिसे तय किया गया है: https://connect.microsoft.com/VisualStudio/feedback/details/773682/wpf-property-with-private-setter-is-updated-by-a-twoway-binding

तो आप इस व्यवहार को प्राप्त कर सकते हैं यदि आपका ऐप एनईटी फ्रेमवर्क 4.0 को लक्षित करता है, लेकिन आपके विकास मशीन पर .NET Framework 4.5+ स्थापित है।

समस्या को ठीक करने के लिए आपको सेटर से private कीवर्ड को निकालना चाहिए।

मेरे पास एक मानचित्र-टाइल सेटिंग है जो मैं मेनू-बटन के माध्यम से अपडेट कर रहा हूं मुझे एक अजीब स्थिति मिल गई है जहां मैं रिलीज़ बिल्ड पर त्रुटि को मार रहा था। कोड निम्नानुसार है:

देखें-मॉडल

private KnownTileSource _selectedTile;
public KnownTileSource SelectedTile
{
    get { return _selectedTile; }
    private set
    {
        _selectedTile = value;
        ...
        OnPropertyChanged("SelectedTile");
    }
}

राय

<Window ...
 xmlns:predefined="clr-namespace:BruTile.Predefined;assembly=BruTile">
...
    <MenuItem Header="_Bing Aerial" Command="{Binding ChangeTileCommand}" CommandParameter="{x:Static predefined:KnownTileSource.BingAerial}" IsChecked="{Binding Path=SelectedTile, Mode=TwoWay, Converter={local:EnumToBooleanConverter}, ConverterParameter=BingAerial}"/>
...
</Window>

यह मेरे डेवलपर परिवेश में ठीक काम कर रहा था लेकिन जब मैंने एक रिलीज बिल्ड तैयार किया तो मुझे निम्नलिखित मिल रहा था:

त्रुटि

System.InvalidOperationException: A TwoWay or OneWay ToSource binding cannot work on the read-only property 'SelectedTile'...

सरल समाधान, उपरोक्त SelectedTile संपत्ति में private set करने के लिए private set को परिवर्तित करें।

तो यह कैसे डीबग के दौरान और केवल रिलीज के दौरान त्रुटि नहीं फेंक रहा था? मैं नहीं देख सकता कि यह कभी भी डीबग मोड के दौरान काम कर रहा था।





mvvm