al-develop / Property-Converter

A small Tool to convert C# AutoProperties to Mvvm Styled Properties.
GNU General Public License v3.0
1 stars 1 forks source link

Have you looked into PropertyChanged.Fody? #1

Open GeertvanHorrik opened 7 years ago

GeertvanHorrik commented 7 years ago

Just noticed this via search for catel and although this is a good idea, what's the benefit of this over:

  1. ReSharper (custom extensions that can convert this)
  2. Visual Studio analyzers (which can auto-convert as well)
  3. PropertyChanged.Fody (or in case of Catel, Catel.Fody).

The advantage of option 3 is that the conversion is done at compile time, so your code will also be clean and be using auto-properties.

I think running a custom tool will eventually frustrate developers where the same logic implemented via 1 or 2 could be useful on the long run.

al-develop commented 7 years ago

I see the benefit over ReSharper, that - as far as I know - ReSharper is not a free tool. In my company I have the benefits of ReSharper and would use them over my tool. But at home, where I rather use free stuff, I would need such a tool for conversion.

About VS analyzers - using a simple tool has as smaller learning curve, while it seems to me, VS analyzers (of which I haven't heard before) looks like it needs a little bit of time to get into it. It might be a better solution on long-term, but for a quick solution it's a little of an overload I think. (I might be mistaken at this, as I didn't know about that tool before and just did a quick google research without diving into that topic. It's s just my first impression, so if I'm mistaken about that, please correct me).

And about Fody - it looks pretty neat, but it seems to me, it can only convert to auto properties with the notifinyg method "OnNotifyPropertyChanged". So to people who are using other libs - for example DevExpress.Mvvm or MvvmLight (DX has the Methods "SetProperty" and MvvmLight has "RaisePropertyChanged") - Fody wouldn't be an option. Again, I just did a quick research, without diving deeper into it, so it's again just a first impression - correct me, if I'm wrong please. But I suppose for people, who primarily use Catel.Mvvm, Catel.Fody is definitely the better option. The conversion on compile time is a big advantage over a custom tool, no doubt about that.

Altogether, that custom tool aims to support different styles of mvvm, but for specific use cases - for example, when you know, you will only use that one specific mvvm library all the time - Fody would be the way to go. From my own experience, I got to use different libraries (DX, Mvvm.Light, Caliburn) in different projects (not all started by me, therefore I can't use only one library), so a tool where I can convert properties into the currently needed style is - at least to me - pretty useful. I will look up more information about VS analyzers, it might be actually more useful for my own cases as well, thank you for the hint.