Torna indietro   Hardware Upgrade Forum > Software > Programmazione

MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro
Wireless 2.4 GHz, Bluetooth 5.4, cancellazione attiva del rumore, design pieghevole e un'autonomia che mette in imbarazzo prodotti che costano il doppio. Le Maestro 500 non eccellono in nulla, ma offrono tutto. E a questo prezzo è difficile chiedere di più
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine
Dopo anni di attesa e una lunga fase di sviluppo, Noctua entra nel mercato dei dissipatori a liquido AIO con la nuova serie NL-LC1. Forte dell'esperienza maturata nel raffreddamento ad aria, l'azienda austriaca promette di portare la propria filosofia fatta di qualità costruttiva, attenzione ai dettagli e silenziosità anche in questo segmento. Abbiamo provato il nuovo sistema per scoprire se riesce a distinguersi in un mercato ormai molto competitivo.
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super
Arrivato sul mercato italiano a fine marzo, la serie Boox Go 10.3 (Gen II) offre Android 15, penna da 4096 livelli e retroilluminazione opzionale (nel modello da noi provato, Lumi, presente). La serie si compone di due tablet ePaper che fanno da e-reader, blocco note digitale e persino browser, tutto a un prezzo che fa dimenticare i prodotti di brand più blasonati
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 10-03-2014, 20:17   #1
pano1974
Member
 
L'Avatar di pano1974
 
Iscritto dal: Aug 2001
Messaggi: 158
[C#] Problema con MEF

Ciao a tutti.
Volendo rifare un vecchio programmino ho colto l'occasione per imparare MEF e la modularità.
Mi sono preso il mio buon vecchio libro di C# e Framework4 e ho cominciato a studiarlo.Dalla rete ho scaricato un programma dimostrativo per vedere come è composto il codice e cercare di capire un pò di più 'sto benedetto mef.
Provo a scrivere un sw di mio pugno per adattarlo alle mie esigenze ma qua cominciano i problemi.
In pratica il mio sw carica le Part nel Catalog ma non mi riempie il container.
Il sw è suddiviso in vari progetti come riportato di seguito:

Contratto.cs
Codice:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Contracts
{
    public interface ITipiProtocolli
    {
        List<string> ElencoProtocolli();
    }

    public interface ITipo
    {
        string TipoProtocollo { get; }
    }

    
    public interface INomeProtocollo
    {
        string NomeProtocollo { get; }
    }
}
ElencoProtocolli.cs:

Codice:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel.Composition;
using System.ComponentModel.Composition.Hosting;
using Contracts;

namespace ElencoProtocolli
{
    [Export(typeof(ITipiProtocolli))]
    public class ElencoProtocolli : ITipiProtocolli
    {
        [ImportMany(typeof(ITipo))]
        IEnumerable<Lazy<ITipo, INomeProtocollo>> protocolli;

        List<string> ITipiProtocolli.ElencoProtocolli()
        {
            List<string> str = new List<string>();
            foreach (Lazy<ITipo, INomeProtocollo> p in protocolli)
            {
                str.Add(p.Metadata.NomeProtocollo + " " + p.Value);
            }
            return str;
        }
    }
}
Mef1.cs:

Codice:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.ComponentModel.Composition;
using Contracts;

namespace Export1
{
    [Export(typeof(ITipo))]
    [ExportMetadata("Protocollo", "X21")]
    public class Mef1 : Contracts.ITipo
    {
        public string TipoProtocollo
        {
            get { return "X21"; }
        }
    }
}
Mef2.cs
Codice:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.ComponentModel.Composition;
using Contracts;

namespace Export2
{
    [Export(typeof(ITipo))]
    [ExportMetadata("Protocollo", "MODBUS")]
    public class Mef2 : Contracts.ITipo
    {
        public string TipoProtocollo
        {
            get { return "Modbus"; }
        }
    }
}
MainWindows.xaml.cs:
Codice:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.ComponentModel.Composition.Hosting;
using System.ComponentModel.Composition;
using System.Reflection;
using Contracts;


namespace WpfApplication1
{
    /// <summary>
    /// Logica di interazione per MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {

        [Import]
        public ITipiProtocolli protocol;

        private CompositionContainer _container;

        public MainWindow()
        {
            InitializeComponent();
            

            //An aggregate catalog that combines multiple catalogs
            var catalog = new AggregateCatalog();
            string s;
            s = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); ;
            catalog.Catalogs.Add(new DirectoryCatalog(s));
            _container = new CompositionContainer(catalog);


            //Fill the imports of this object
            try
            {
                this._container.ComposeParts(this);
                tb1.Text += "\nPath: " + s;
            }
            catch (CompositionException compositionException)
            {
                tb1.Text = compositionException.Errors.ToString();
                tb1.Text += "\n" + compositionException.ToString();
            }

        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
           
            if (protocol.ElencoProtocolli().Count == 0)
            {
                tb1.Text += "\n"+"Numero Protocolli = 0";
            }
            foreach (string s in protocol.ElencoProtocolli())
            {
                tb1.Text += "\n" + s;
            }
            for (int i = 0; i < _container.Catalog.Parts.Count(); i++)
            {
                tb1.Text+="\n"+_container.Catalog.Parts.ElementAt(i);
            }
        }
    }

}
Se qualcuno può spiegarmi dove sbaglio ringrazio anticipatamente.
__________________
Il mio HW:notebook:acer aspire 5024WLMI mandato in riparazione per masterizzatore e schermo,desktop: (è un pò vecchiotto ma fa sempre il suo sporco lavoro):MB Biostar M7MKE SlotA,chipSet VIA KX133/686A UltraDMA66,Athlon700 BUS200 512KB cacheL2,512MB ram PC133,MatroxMilleniumG400DH.
pano1974 è offline   Rispondi citando il messaggio o parte di esso
Old 10-03-2014, 20:19   #2
pano1974
Member
 
L'Avatar di pano1974
 
Iscritto dal: Aug 2001
Messaggi: 158
Dimenticavo, quando compilo l'eseguibile e tutte le dll generate vengono copiate in un unica directory
__________________
Il mio HW:notebook:acer aspire 5024WLMI mandato in riparazione per masterizzatore e schermo,desktop: (è un pò vecchiotto ma fa sempre il suo sporco lavoro):MB Biostar M7MKE SlotA,chipSet VIA KX133/686A UltraDMA66,Athlon700 BUS200 512KB cacheL2,512MB ram PC133,MatroxMilleniumG400DH.
pano1974 è offline   Rispondi citando il messaggio o parte di esso
Old 10-03-2014, 22:35   #3
pano1974
Member
 
L'Avatar di pano1974
 
Iscritto dal: Aug 2001
Messaggi: 158
Risolto....quando si dice perdersi in un bicchiere d'acqua!!!!
__________________
Il mio HW:notebook:acer aspire 5024WLMI mandato in riparazione per masterizzatore e schermo,desktop: (è un pò vecchiotto ma fa sempre il suo sporco lavoro):MB Biostar M7MKE SlotA,chipSet VIA KX133/686A UltraDMA66,Athlon700 BUS200 512KB cacheL2,512MB ram PC133,MatroxMilleniumG400DH.
pano1974 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro MSI Maestro 500 Wireless: ANC e 90 ore di autono...
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine NL-LC1 è il primo dissipatore a liquido A...
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con ...
Gigabyte MO32U24 OLED: il 4K a 240Hz su un pannello OLED ideale per il gaming Gigabyte MO32U24 OLED: il 4K a 240Hz su un panne...
Recensione realme 16 5G: lo smartphone con Selfie Mirror ha una batteria da 6550mAh Recensione realme 16 5G: lo smartphone con Selfi...
ASUS ROG Strix LC IV: prestazioni e impa...
Gemini Code Assist e Gemini CLI danno l'...
Windows: problemi di avvio per alcune ap...
QuEra sbaraglia tutte le previsioni e pr...
Reno16 Series ufficiale: OPPO annuncia l...
Previsioni sempre più fosche per il 2026...
GTA V: upgrade gratuito a PS5 e Xbox Ser...
Lenovo ThinkTab X11: il tablet impermeab...
Android 17: problemi di connettività Wi-...
Quarto giorno di Prime Day anticipato Am...
SwitchBot Smart Lock Ultra, ecco perch&e...
Altro che transistor, il vero limite dei...
Ring sconta due videocamere nuovissime: ...
Prime Day anticipato, sfida action cam d...
L'IA si diffonde tra gli adulti, ma la f...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 13:17.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v