SlideShare a Scribd company logo
How to build extensible Silverlight
application using MEF
Radenko Zec – Software Development Consultant
at Lanaco d.o.o
http://blog.developers.ba
Evergreen Question
How to build .NET applications from
components that can be discovered, reused
and composed dynamically?
Many working solutions, but none specifically
targeted to general third-party extensibility
What’s MEF, Anyway?
MEF Component ExportImport MEF Component ExportImport
Composition
The key elements
How MEF works
Simple MEF - MVVM
demo
MEF VS IOC container
When to use MEF ?
Catalogs – Type, Aggregate, Directory, Deployment
Lazy load component's
Import many
Metadata tagging
Creation policies
ExportFactory
Custom attributes
ImportingContructor
CompositionContainer
Recomposition
Allow default
demo
MsNetwork2011 -How to build extensible silverlight application using MEF
MsNetwork2011 -How to build extensible silverlight application using MEF

More Related Content

What's hot

My top 5 php frameworks to consider in 2019!
My top 5 php frameworks to consider in 2019!My top 5 php frameworks to consider in 2019!
My top 5 php frameworks to consider in 2019!
Silicon It Hub Pvt Ltd.
 
.Net framework
.Net framework.Net framework
.Net frameworkArun Pal
 
dotNET frameworks
dotNET frameworksdotNET frameworks
dotNET frameworks
nawal saad
 
Introduction to vb.net
Introduction to vb.netIntroduction to vb.net
Introduction to vb.net
suraj pandey
 
Vb.net class notes
Vb.net class notesVb.net class notes
Vb.net class notes
priyadharshini murugan
 
Learn .net and develop the web applications
Learn .net and develop the web applicationsLearn .net and develop the web applications
Learn .net and develop the web applications
times institute of management and technical studies
 
WebDU part deux
WebDU part deuxWebDU part deux
WebDU part deux
Nick Hodge
 
The seven pillars of aspnet
The seven pillars of aspnetThe seven pillars of aspnet
The seven pillars of aspnet
Nethaji Naidu
 
important DotNet Questions For Practicals And Interviews
important DotNet Questions For Practicals And Interviewsimportant DotNet Questions For Practicals And Interviews
important DotNet Questions For Practicals And Interviews
Rahul Jain
 
Top 10 open source technologies for enterprise/Business web application devel...
Top 10 open source technologies for enterprise/Business web application devel...Top 10 open source technologies for enterprise/Business web application devel...
Top 10 open source technologies for enterprise/Business web application devel...
Techcronus Business Solutions Pvt. Ltd.
 
Top 10 php frameworks in 2021
Top 10 php frameworks in 2021Top 10 php frameworks in 2021
Top 10 php frameworks in 2021
MaryamAnwar10
 
Microsoft silverlight : top 10 features
Microsoft silverlight : top 10 features Microsoft silverlight : top 10 features
Microsoft silverlight : top 10 features
Diya Singh
 
Yii framework
Yii frameworkYii framework
Yii framework
Mohammed Saqib
 
When MEF meets Silverlight
When MEF meets SilverlightWhen MEF meets Silverlight
When MEF meets Silverlight
Amr Elsehemy
 
Stateful mock servers to the rescue on REST ecosystems
Stateful mock servers to the rescue on REST ecosystemsStateful mock servers to the rescue on REST ecosystems
Stateful mock servers to the rescue on REST ecosystems
Nuno Caneco
 
PHP Interview Questions
PHP Interview QuestionsPHP Interview Questions
PHP Interview Questions
MaryamAnwar10
 
Magento's MFTF for Agencies and Extension Developers
Magento's MFTF for Agencies and Extension DevelopersMagento's MFTF for Agencies and Extension Developers
Magento's MFTF for Agencies and Extension Developers
Łukasz Bajsarowicz
 

What's hot (19)

My top 5 php frameworks to consider in 2019!
My top 5 php frameworks to consider in 2019!My top 5 php frameworks to consider in 2019!
My top 5 php frameworks to consider in 2019!
 
.Net framework
.Net framework.Net framework
.Net framework
 
C# chap 2
C# chap 2C# chap 2
C# chap 2
 
dotNET frameworks
dotNET frameworksdotNET frameworks
dotNET frameworks
 
Introduction to vb.net
Introduction to vb.netIntroduction to vb.net
Introduction to vb.net
 
Vb.net class notes
Vb.net class notesVb.net class notes
Vb.net class notes
 
Learn .net and develop the web applications
Learn .net and develop the web applicationsLearn .net and develop the web applications
Learn .net and develop the web applications
 
WebDU part deux
WebDU part deuxWebDU part deux
WebDU part deux
 
The seven pillars of aspnet
The seven pillars of aspnetThe seven pillars of aspnet
The seven pillars of aspnet
 
important DotNet Questions For Practicals And Interviews
important DotNet Questions For Practicals And Interviewsimportant DotNet Questions For Practicals And Interviews
important DotNet Questions For Practicals And Interviews
 
Silverlight 4
Silverlight 4Silverlight 4
Silverlight 4
 
Top 10 open source technologies for enterprise/Business web application devel...
Top 10 open source technologies for enterprise/Business web application devel...Top 10 open source technologies for enterprise/Business web application devel...
Top 10 open source technologies for enterprise/Business web application devel...
 
Top 10 php frameworks in 2021
Top 10 php frameworks in 2021Top 10 php frameworks in 2021
Top 10 php frameworks in 2021
 
Microsoft silverlight : top 10 features
Microsoft silverlight : top 10 features Microsoft silverlight : top 10 features
Microsoft silverlight : top 10 features
 
Yii framework
Yii frameworkYii framework
Yii framework
 
When MEF meets Silverlight
When MEF meets SilverlightWhen MEF meets Silverlight
When MEF meets Silverlight
 
Stateful mock servers to the rescue on REST ecosystems
Stateful mock servers to the rescue on REST ecosystemsStateful mock servers to the rescue on REST ecosystems
Stateful mock servers to the rescue on REST ecosystems
 
PHP Interview Questions
PHP Interview QuestionsPHP Interview Questions
PHP Interview Questions
 
Magento's MFTF for Agencies and Extension Developers
Magento's MFTF for Agencies and Extension DevelopersMagento's MFTF for Agencies and Extension Developers
Magento's MFTF for Agencies and Extension Developers
 

Viewers also liked

Idt magazine 12-2008
Idt magazine 12-2008Idt magazine 12-2008
Idt magazine 12-2008
mohammedkaram
 
Creating extensible application using MEF
Creating extensible application using MEFCreating extensible application using MEF
Creating extensible application using MEF
Ben Hall
 
Java management extensions (jmx)
Java management extensions (jmx)Java management extensions (jmx)
Java management extensions (jmx)
Tarun Telang
 
Idt magazine 11-2008
Idt magazine 11-2008Idt magazine 11-2008
Idt magazine 11-2008
mohammedkaram
 
Opiti
OpitiOpiti
Sinergija2012 - Developing REST API for Windows Azure with ASP.NET Web API
Sinergija2012 - Developing REST API for Windows Azure with ASP.NET Web APISinergija2012 - Developing REST API for Windows Azure with ASP.NET Web API
Sinergija2012 - Developing REST API for Windows Azure with ASP.NET Web APIRadenko Zec
 
Windays12 ASP.NET Web API
Windays12 ASP.NET Web APIWindays12 ASP.NET Web API
Windays12 ASP.NET Web APIRadenko Zec
 
Developing advanced windows phone apps
Developing advanced windows phone appsDeveloping advanced windows phone apps
Developing advanced windows phone appsRadenko Zec
 
MsCommunity2013- Single page application case study - Silverreader
MsCommunity2013-  Single page application case study - SilverreaderMsCommunity2013-  Single page application case study - Silverreader
MsCommunity2013- Single page application case study - SilverreaderRadenko Zec
 
MsNetwork2013 Easy transition to HTML 5 using MVVM
MsNetwork2013 Easy transition to HTML 5 using MVVMMsNetwork2013 Easy transition to HTML 5 using MVVM
MsNetwork2013 Easy transition to HTML 5 using MVVMRadenko Zec
 
MsCommunity2012 - Developing REST API using ASP.NET Web API
MsCommunity2012 - Developing REST API using ASP.NET Web APIMsCommunity2012 - Developing REST API using ASP.NET Web API
MsCommunity2012 - Developing REST API using ASP.NET Web APIRadenko Zec
 
Sinergija2013 ASP.NET Web API to the max
Sinergija2013 ASP.NET Web API to the maxSinergija2013 ASP.NET Web API to the max
Sinergija2013 ASP.NET Web API to the maxRadenko Zec
 
Introduction to Azure DocumentDB
Introduction to Azure DocumentDBIntroduction to Azure DocumentDB
Introduction to Azure DocumentDB
Radenko Zec
 
Plugin architecture (Extensible Application Architecture)
Plugin architecture (Extensible Application Architecture)Plugin architecture (Extensible Application Architecture)
Plugin architecture (Extensible Application Architecture)
Chinmoy Mohanty
 
Water polution (1)
Water polution (1)Water polution (1)
Water polution (1)
Stefka Komitova
 
Best Practices in Plugin Development (WordCamp Seattle)
Best Practices in Plugin Development (WordCamp Seattle)Best Practices in Plugin Development (WordCamp Seattle)
Best Practices in Plugin Development (WordCamp Seattle)
andrewnacin
 
An easy guide to Plugin Development
An easy guide to Plugin DevelopmentAn easy guide to Plugin Development
An easy guide to Plugin Development
Shinichi Nishikawa
 
Scala.io
Scala.ioScala.io
Scala.io
Diego Pacheco
 

Viewers also liked (20)

Idt magazine 12-2008
Idt magazine 12-2008Idt magazine 12-2008
Idt magazine 12-2008
 
Creating extensible application using MEF
Creating extensible application using MEFCreating extensible application using MEF
Creating extensible application using MEF
 
Java management extensions (jmx)
Java management extensions (jmx)Java management extensions (jmx)
Java management extensions (jmx)
 
Idt magazine 11-2008
Idt magazine 11-2008Idt magazine 11-2008
Idt magazine 11-2008
 
Opiti
OpitiOpiti
Opiti
 
Educar
EducarEducar
Educar
 
Sinergija2012 - Developing REST API for Windows Azure with ASP.NET Web API
Sinergija2012 - Developing REST API for Windows Azure with ASP.NET Web APISinergija2012 - Developing REST API for Windows Azure with ASP.NET Web API
Sinergija2012 - Developing REST API for Windows Azure with ASP.NET Web API
 
Windays12 ASP.NET Web API
Windays12 ASP.NET Web APIWindays12 ASP.NET Web API
Windays12 ASP.NET Web API
 
Developing advanced windows phone apps
Developing advanced windows phone appsDeveloping advanced windows phone apps
Developing advanced windows phone apps
 
MsCommunity2013- Single page application case study - Silverreader
MsCommunity2013-  Single page application case study - SilverreaderMsCommunity2013-  Single page application case study - Silverreader
MsCommunity2013- Single page application case study - Silverreader
 
Decos Brochure
Decos BrochureDecos Brochure
Decos Brochure
 
MsNetwork2013 Easy transition to HTML 5 using MVVM
MsNetwork2013 Easy transition to HTML 5 using MVVMMsNetwork2013 Easy transition to HTML 5 using MVVM
MsNetwork2013 Easy transition to HTML 5 using MVVM
 
MsCommunity2012 - Developing REST API using ASP.NET Web API
MsCommunity2012 - Developing REST API using ASP.NET Web APIMsCommunity2012 - Developing REST API using ASP.NET Web API
MsCommunity2012 - Developing REST API using ASP.NET Web API
 
Sinergija2013 ASP.NET Web API to the max
Sinergija2013 ASP.NET Web API to the maxSinergija2013 ASP.NET Web API to the max
Sinergija2013 ASP.NET Web API to the max
 
Introduction to Azure DocumentDB
Introduction to Azure DocumentDBIntroduction to Azure DocumentDB
Introduction to Azure DocumentDB
 
Plugin architecture (Extensible Application Architecture)
Plugin architecture (Extensible Application Architecture)Plugin architecture (Extensible Application Architecture)
Plugin architecture (Extensible Application Architecture)
 
Water polution (1)
Water polution (1)Water polution (1)
Water polution (1)
 
Best Practices in Plugin Development (WordCamp Seattle)
Best Practices in Plugin Development (WordCamp Seattle)Best Practices in Plugin Development (WordCamp Seattle)
Best Practices in Plugin Development (WordCamp Seattle)
 
An easy guide to Plugin Development
An easy guide to Plugin DevelopmentAn easy guide to Plugin Development
An easy guide to Plugin Development
 
Scala.io
Scala.ioScala.io
Scala.io
 

Recently uploaded

Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
Peter Spielvogel
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 

Recently uploaded (20)

Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 

MsNetwork2011 -How to build extensible silverlight application using MEF

  • 1.
  • 2. How to build extensible Silverlight application using MEF Radenko Zec – Software Development Consultant at Lanaco d.o.o http://blog.developers.ba
  • 3.
  • 4.
  • 5. Evergreen Question How to build .NET applications from components that can be discovered, reused and composed dynamically? Many working solutions, but none specifically targeted to general third-party extensibility
  • 6.
  • 7. What’s MEF, Anyway? MEF Component ExportImport MEF Component ExportImport Composition
  • 8.
  • 11. Simple MEF - MVVM demo
  • 12.
  • 13. MEF VS IOC container
  • 14. When to use MEF ?
  • 15. Catalogs – Type, Aggregate, Directory, Deployment Lazy load component's Import many Metadata tagging Creation policies ExportFactory Custom attributes ImportingContructor CompositionContainer Recomposition Allow default demo