Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
Fino a 740 km WLTP con la batteria da 97,2 kWh, sospensioni che leggono la strada con una telecamera e un abitacolo da salotto parigino. La nuova DS N°7 raccoglie l'eredità della DS 7 e la porta, per la prima volta, nel mondo 100% elettrico. Ecco come è fatta, cosa offre e quanto costa.
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più
Abbiamo provato Samsung Galaxy Tab S12 Ultra nella versione 12 GB + 256 GB con tastiera, e il risultato è un tablet che in questa configurazione si comporta come un notebook con la fluidità tipica di Android. Spessore di 5,1 mm, display Dynamic AMOLED 2X da 14,6 pollici, MediaTek Dimensity 9500 e un software senza incertezze compongono un prodotto di vertice, con prezzi da 1.539 euro, frenato solo da un'autonomia nella parte bassa del confronto
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura)
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura)
Abbiamo provato per dieci giorni la Hyundai IONIQ 5 N, con 650 CV, 770 Nm e uno 0-100 km/h in 3,4 secondi. Il suo punto forte è N e-Shift, che simula un cambio a otto rapporti con suoni da motore termico e perfino un bang supersonico
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 10-03-2014, 21: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, 21: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, 23: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


DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort DS N°7 E-Tense: il SUV premium made in Melfi...
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più Recensione Samsung Galaxy Tab S12 Ultra: non chi...
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura) Hyundai IONIQ 5 N, l'elettrica che finge di esse...
CES Unveiled Milan, l'IA diventa tecnologia fondativa e il commercio torna centrale CES Unveiled Milan, l'IA diventa tecnologia fond...
 Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP Recensione OPPO Find X10 Pro Max: un top di gam...
Il nuovo pickup elettrico Ford può alime...
Opera WebAI: così l'intelligenza artific...
Copilot nella Sidebar di Edge sparisce p...
X terrorizza gli utenti con una mano gig...
Firmware UEFI, embargo saltato per error...
Android 18 limiterà le modifiche alla ru...
Silent Hill 1 Remake, nuove indiscrezion...
Keystone distrugge 18.835 hardware walle...
GTA VI potrebbe richiedere più GB...
Nokia 6300 rinasce grazie all'IA: arriva...
iPhone 18e: le prime indiscrezioni antic...
Motorola Edge 70 Neo in arrivo, un leak ...
Apple rilascia iOS 27.2 e iPadOS 27.2: n...
Ondata di licenziamenti in casa PlayStat...
macOS 27.2 Golden Gate è disponib...
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: 14:11.


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