Inkonsistenter Zugriff

exiter28

Erfahrenes Mitglied
Hi,

ich hätte mal wieder ein kleines Rätsel. Folgende Meldung bekomme ich, wenn ich den folgenden Code in eine public Classe setze:

fehlermeldung:
Fehler 1 Inkonsistenter Zugriff: Rückgabetyp "System.Collections.Generic.List<Key_Manager.DataStreamInfo>" ist weniger zugreifbar als Methode "Key_Manager.ShowADS.GetFileStreams(string)" C:\Users\Scharl\Documents\Visual Studio 2010\Projects\Project DLL\ShowADS\ShowADS\ShowADS.cs 52 37 ShowADS


Code:
public Class ADS
{
        public List<DataStreamInfo> GetFileStreams(string fileName)
        {
            List<DataStreamInfo> streams = new List<DataStreamInfo>();
            FileStream fileStream = new FileStream(fileName, FileMode.Open);

            try
            {
                WIN32_STREAM_ID streamId = new WIN32_STREAM_ID();
                int streamHeaderSize = Marshal.SizeOf(streamId);
                int context = 0;
                bool hasMore = true;

                while (hasMore)
                {
                    int bytesRead = 0;
                    hasMore = BackupRead(fileStream.SafeFileHandle, ref streamId, streamHeaderSize, ref bytesRead, false, false, ref context);

                    if (hasMore && bytesRead == streamHeaderSize)
                    {
                        if (streamId.streamNameSize > 0)
                        {
                            bytesRead = 0;
                            IntPtr pName = Marshal.AllocHGlobal(streamId.streamNameSize);
                            try
                            {
                                BackupRead(fileStream.SafeFileHandle, pName, streamId.streamNameSize, ref bytesRead, false, false, ref context);
                                char[] bName = new char[streamId.streamNameSize];
                                Marshal.Copy(pName, bName, 0, streamId.streamNameSize);

                                string sName = new string(bName);
                                int index = sName.IndexOf(':', 1);
                                if (index > -1) sName = sName.Substring(1, index - 1);

                                DataStreamInfo streamInfo = new DataStreamInfo();
                                streamInfo.StreamName = sName;
                                streamInfo.StreamSize = streamId.size.QuadPart();
                                switch (streamId.streamId)
                                {
                                    case (int)StreamType.BACKUP_ALTERNATE_DATA:
                                        streamInfo.StreamType = "Alternative Data Stream";
                                        break;

                                    case (int)StreamType.BACKUP_DATA:
                                        streamInfo.StreamType = "Standard Data";
                                        break;

                                    case (int)StreamType.BACKUP_EA_DATA:
                                        streamInfo.StreamType = "Extended attribute Data";
                                        break;

                                    case (int)StreamType.BACKUP_LINK:
                                        streamInfo.StreamType = "Hard link information";
                                        break;

                                    case (int)StreamType.BACKUP_OBJECT_ID:
                                        streamInfo.StreamType = "Object identifiers";
                                        break;

                                    case (int)StreamType.BACKUP_PROPERTY_DATA:
                                        streamInfo.StreamType = "Property data";
                                        break;

                                    case (int)StreamType.BACKUP_REPARSE_DATA:
                                        streamInfo.StreamType = "Reparse points";
                                        break;

                                    case (int)StreamType.BACKUP_SECURITY_DATA:
                                        streamInfo.StreamType = "Security descriptor data";
                                        break;

                                    case (int)StreamType.BACKUP_SPARSE_BLOCK:
                                        streamInfo.StreamType = "Sparse file";
                                        break;
                                }

                                streams.Add(streamInfo);
                            }
                            finally
                            {
                                Marshal.FreeHGlobal(pName);

                            }
                        }

                        int low = 0;
                        int high = 0;
                        BackupSeek(fileStream.SafeFileHandle, streamId.size.Low, streamId.size.High, ref low, ref high, ref context);
                    }
                    else
                    {
                        break;
                    }
                }
            }
            catch
            {
                return null;
            }
            finally
            {
                fileStream.Close();
            }

            return streams;
        }
    }
}

Kann mir einer von Euch erklären, was hier nicht passt?

Danke!
 

Nico Graichen

Erfahrenes Mitglied
Hi

Du publizierst eine Klasse nach aus, die jedoch nicht als Public markiert ist!
Und zwar:Key_Manager.DataStreamInfo
Steht aber auch in der Fehlermeldung ;)
 

Shakie

Erfahrenes Mitglied
Du musst entweder die Klasse Key_Manager.DataStreamInfo als Public deklarieren oder die Methode GetFileStreams als Private deklarieren.