Я пытаюсь реализовать несколько слоев абстракции для различных частей оборудования, и я обнаружил, что реализовал одну и ту же функцию, NofityStaticPropertyChanged
(из здесь ) примерно 5 раз.
/// <summary>
/// A slightly different implementation of Static Property Changed, from here:
/// https://stackoverflow.com/a/42111290/2444435
/// </summary>
public static event PropertyChangedEventHandler StaticPropertyChanged;
protected static void NotifyStaticPropertyChanged(string propertyName)
{
StaticPropertyChanged?.Invoke(null, new PropertyChangedEventArgs(propertyName));
}
Я бы хотел, чтобы все эти классы наследовали от abstract class AbstractionBase
, чтобы избежать повторного использования кода.
Я читал в другом месте о том, как наследовать такого рода функции для нестатических членов, но на самом деле я никогда не создаю экземпляры этих слоев / фабрик абстракции.
Я не уверен, что это действительно возможно, поскольку статические свойства не могут быть унаследованы. Я чувствую, что так и должно быть, так как это в основном функция, а не свойство? Моя текущая попытка такова:
public abstract class AbstractionBase : INotifyPropertyChanged
{
//THIS IS NOT WORKING!
#region INofity Declarations
/// <summary>
/// A slightly different implementation of Static Property Changed, from here:
/// https://stackoverflow.com/a/42111290/2444435
/// </summary>
public static event PropertyChangedEventHandler StaticPropertyChanged;
protected static void NotifyStaticPropertyChanged(string propertyName)
{
StaticPropertyChanged?.Invoke(null, new PropertyChangedEventArgs(propertyName));
}
#endregion
}
Спасибо! У меня есть ощущение, что я не смогу сойти с рук с этой попыткой дедупликации, но если это возможно, то это будет изящно!