Community Attribute Builder final
If you are working with Relate+ platform most probably you are using entities attributes to attach some additional info to particular entity type. This is a great way to extend built-in functionality but however involved a bit of manual work:
- You have to define attribute for each of the entity in Relate+ administrative UI (which honestly speaking could be made more user friendly).
- You have to refer to the attribute via stringly-typed interface.
Latter for me is most embarrassing.
This approach could give you few real scenarios where such is unacceptable:
- When you will margin for a grammar error when typing attribute name – that could be discovered only during runtime.
- You cannot use static code analysis tools. Like to search for all attribute usages.
- You cannot use some of the refactoring tools –> like rename attribute name.
- You can easily change type of the attribute and forget about code that uses that, effect –> runtime error(s).
- Use cannot leverage all the power of Visual Studio (for instance to provide Intellisense over available attributes)
So therefore I created package that should relief tasks with Community entity’s attributes – Community Attribute Builder.
1. Describe community entity’s attributes in code. Those attributes defined in metadata class are synced during application start-up and added to the target entity:
2. Limit scanning of the assemblies:
3. You can set or get entity’s attribute value(s) using strongly-typed interface.
4. Support for strongly typed queries
5. Added support for IList<T> type attributes. You can assign via local variable assignment and modification or using line modifications.
or you can use more convenient syntax:
Rename, deletion and content migration for the community entity attributes need to me done manually.
Can be found here (or search by “community” in NuGet package manager).
I somebody is really curious how to implement interfaces like these – strongly-typed interface over stringly-typed one, some basics could be found here.
Source could be found in GitHub.
Hope this helps!