// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System;
using System.ComponentModel;
namespace CommunityToolkit.Mvvm.ComponentModel;
///
/// An attribute that indicates that a given type should implement the interface and
/// have minimal built-in functionality to support it. This includes exposing the necessary event and having two methods
/// to raise it that mirror and
/// . For more extensive support, use .
///
/// This attribute can be used as follows:
///
/// [INotifyPropertyChanged]
/// partial class MyViewModel : SomeOtherClass
/// {
/// // Other members here...
/// }
///
///
///
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)]
public sealed class INotifyPropertyChangedAttribute : Attribute
{
///
/// Gets or sets a value indicating whether or not to also generate all the additional helper methods that are found
/// in as well (eg. .
/// If set to , only the event and
/// the two overloads will be generated.
/// The default value is .
///
public bool IncludeAdditionalHelperMethods { get; init; } = true;
}