Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
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


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
La Serie A con DAZN e Amazon Prime con l...
Giochi Ubisoft su Steam senza Ubisoft Co...
Miami Beach ha autorizzato la maxi opera...
Apple regala un altro anno di funzioni s...
Alla fine è successo davvero: Vol...
Il meglio di Amazon del weekend in uno s...
Speciale TV in offerta su Amazon: Hisens...
Non c'è pace per Trezor: 347.000 e-mail ...
È un portatile Dell e li vale tut...
Apple iPhone 17 Pro Max 256GB a 1.195€ (...
GPT-6 Astra è davvero AGI o non s...
LG OLED G6S 48'' a 845€ e G6 55'' a 1368...
Mantax Otax: il malware Android che crip...
Musk incassa un altro maxi contratto IA:...
Le vendite di EV sono esplose in tutto i...
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: 00:37.


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