Я использую Fody.PropertyChanged и Fody.Validar в моем проекте на C #, чтобы избежать написания стандартного кода.Давайте предположим, что у меня есть некоторый класс A:
[AddINotifyPropertyChanged]
[InjectValidation]
public class A { }
Я должен использовать объекты типа A в других частях моего кода, которым требуется тип A для реализации интерфейсов, таких как INotifyPropertyChanged или INotifyDataErrorInfo.Есть два известных способа сделать это:
- Реализация интерфейсов вручную (много шаблонов):
[AddINotifyPropertyChanged]
[InjectValidation]
public class A: INotifyPropertyChanged, INotifyDataErrorInfo { ... }
Приведение объекта типа A к требуемым интерфейсам (больше кода, ReSharper генерирует предупреждения о подозрительных приведениях, могут сбиться универсальные методы):
public static T DoSomething<T>(T arg) where T: INotifyPropertyChanged { ... }
var a = new A();
var b = DoSomething((INotifyPropertyChanged) a) // Returns INotifyPropertyChanged.
Есть ли способ "сообщить"IntelliSense и компилятор, что класс реализует интерфейс, фактически не реализуя его, и позволяет Fody сделать эту работу?
[AddINotifyPropertyChanged]
[InjectValidation]
[Implements(typeof(INotifyPropertyChanged))]
public class A { }
var a = new A();
var b = DoSomething(a) // Returns A.