Works like this. You make C++ UDataAsset derived class. You save it via project inspector (or whatever it is called). You add one field to it, rebuild and restart the editor.
And boom - upon restart you see “import failed”, asset is gone and so are all references to it. Very easy to reproduce, I think I even reported it.
I honestly don’t care if it is odd or not (no offense intended). The purpose of engine/tool/language is to complement my abilities, so whatever works for me is right, and whatever doesn’t work for me is wrong.
I think working via extension methods might be a good approach, because essentially it is similar to idea where data must be decoupled from the methods. I think it is sorta similar to ideas that were present in lisp and to what I heard of smalltalk. Maya SDK had sorta similar approach in 2007 where they decoupled data from interfaces that process it, and used different prefixes. It worked, sorta made sense, but the process wasn’t organic (Because you had to do that as some sort of “FSomeFunctionInterface.SomeMethod(someData)”. Extension method wraps that into intuitive syntax, plus you can toggle them on/off via namespaces.
The funny thing is that extension methods and yield statement are one of the two features in C# I found interesting. Those aren’t present in C++, although there were proposition for both yield and extension methods to be included into C++ at some point. There was a test implementation for yield in C++, and bjarne stroustroup himself proposed idea of syntax equivalence (where x.someMethod(y) may equal to someMethod(x, y), if X::someMethod(y) does not exist and vice versa)… and that sorta fixes that ancient problem where you had opportunity to declare two versions of equality comparison operators…
I also found interesting statement about C# extension methods on some blog… basically a dude wrote something along the lines of “after writing the code using extension methods, I got a very clean and human readable code… but it wasn’t a true OOP, so I scrapped all of it ann decided to never use extension methods ever again”… which sounded very ridiculous to me, because guy valued using OOP approach more than maintaining code readability.
Anyway, I just found that topic interesting.