samuhe
samuhe

Reputation: 133

C# Error: 'Class' is inaccessible due to protection level

I Have this error: 'CLGDMFeed.Dal.DataManager' is inaccessible due to protection level. And I have no Idea why i get this.

Tis is my class.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CLGDMFeed.Bol;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;


namespace CLGDMFeed.Dal
{
    public static class DataManager
    {

        #region Methods
        public static void SerializeFeed(string sFileName, Feed feed)
        {
            try
            {
                using (Stream stream = File.Open(sFileName, FileMode.Create))
                {
                    BinaryFormatter binform = new BinaryFormatter();
                    binform.Serialize(stream, feed);
                    stream.Close();
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message, ex);
            }
        }

        public static Feed DeSerializeFeed(string sFileName)
        {
            Feed feed;
            try
            {
                using (Stream stream = File.Open(sFileName, FileMode.Open))
                {
                    BinaryFormatter binform = new BinaryFormatter();
                    feed = (Feed)binform.Deserialize(stream);
                    stream.Close();
                }
                return feed;
            }

            catch (Exception ex)
            {
                throw new Exception(ex.Message, ex);
            }
        }

        public static void SerializeIListFeed(string sFileName, IList<Feed> list)
        {
            try
            {
                using (Stream stream = File.Open(sFileName, FileMode.Create))
                {
                    BinaryFormatter bf = new BinaryFormatter();
                    bf.Serialize(stream, list);
                    stream.Close();
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message, ex);
            }
        }

        public static IList<Feed> DeSerializeIListFeed(string sFileName)
        {
            IList<Feed> list;
            try
            {
                using (Stream stream = File.Open(sFileName, FileMode.Open))
                {
                    BinaryFormatter bf = new BinaryFormatter();
                    list = (IList<Feed>)bf.Deserialize(stream);
                    stream.Close();
                }
                return list;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message, ex);
            }
        }





                #endregion
    }
}

This is my form

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CLGDMFeed.Dal;
using CLGDMFeed.Bol;


namespace ViewerGDMFeed
{
    public partial class Viewer : Form
    {
        //Lijst van object Deserializeren van een bestand zodat je ermee kan werken
        IList<Feed> ListFeeds = DataManager.DeSerializeIListFeed("C:\\Documents and Settings\\sam\\Bureaublad\\Listfeeds.lfds");

        public Viewer()
        {
            InitializeComponent();

            //De namen van de feeds toevoegen aan je combobox
            foreach (Feed feed in ListFeeds)
            {
                comboBox.Items.Add(feed.STitle);
            }

        }

        private void comboBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            //Overlopen welke feed uit je lijst overeenkomt met de gekozen feed uit combox
            foreach (Feed feed in ListFeeds)
            { 

                if (comboBox.SelectedText == feed.STitle)
                {
                    //De labels invullen met de juiste data
                    ViewerLabelTitle.Text = feed.STitle;
                    //...
                }
            }
        }

    }
}

Sorry for all the code

Does anyone kno how to solve tis problem? Thanks


I have rebuild the classliberary and the error is gone.

But I have a new error: Metadata file 'C:\Documents and Settings\sam\Bureaublad\Herexamen programmeren\WindowsFormsApplication1\CLGDMFeed\bin\Debug\CLGDMFeed.dll' could not be found

Upvotes: 1

Views: 9129

Answers (4)

Alexey
Alexey

Reputation: 414

Make sure that the assembly with Dal namespace has been signed with a strong name key. Sometimes unsigned assemblies could cause issues like that.

Upvotes: 0

samuhe
samuhe

Reputation: 133

Found the problem! There was a method missing. GetObjectData. Stil don't get where the metadata file problem came from. thanx a lot for your answers. Greetings

Upvotes: 2

Marek Karbarz
Marek Karbarz

Reputation: 29324

seems like you have an invalid reference in your project

Upvotes: 2

Henk Holterman
Henk Holterman

Reputation: 273621

The code looks OK, so you are probably not running the version of the file that you think you are. Check and Open from the Solution-Explorer.

Upvotes: 1

Related Questions