2012-03-07 4 views
3

У меня есть программа на C#, как описано ниже. Но это терпит неудачу. Ошибка «System.IO.FileSystemInfo.FullPath» недоступна из-за уровня защиты. И FullPath подчеркивается синим.«System.IO.FileSystemInfo.FullPath» недоступен из-за его уровня защиты »ошибка в C#

protected void Main(string[] args) 
{ 
    DirectoryInfo parent = new DirectoryInfo(@"C:\Users\dell\Desktop\rename"); 
    foreach (DirectoryInfo child in parent.GetDirectories()) 
    { 
     string newName = child.FullPath.Replace('_', '-'); 

     if (newName != child.FullPath) 
     { 
      child.MoveTo(newName); 
     } 
    } 
} 
+0

Возможно, вы имели в виду u se FullName, а не FullPath. FullPath - это защищенное поле, оно не предназначено для использования таким образом. См. Http://msdn.microsoft.com/en-us/library/ms173121.aspx для объяснения модификаторов доступа. А для полей/свойств FileSystemInfo ссылайтесь на это: http://msdn.microsoft.com/en-us/library/system.io.filesysteminfo.aspx –

+0

Спасибо за вашу помощь :) Я изменил его на FullName, и я заменил " public static "to" protected ". Он работает сейчас. Я закрываю этот вопрос. Еще раз спасибо :) – cethint

+0

Вы всегда можете увидеть, защищено ли поле, частный ect. нажав F12. // Сводка: // Предоставляет базовый класс для объектов System.IO.FileInfo и System.IO.DirectoryInfo //. [Serializable] [ComVisible (истина)] общественного абстрактного класса FileSystemInfo: MarshalByRefObject, ISerializable { // Резюме: // Представляет полный путь к каталогу или файлу. защищенная строка FullPath; –

ответ

6

Свойство, вы ищете называется FullName, не FullPath:

static void Main() 
{ 
    DirectoryInfo parent = new DirectoryInfo(@"C:\Users\dell\Desktop\rename"); 
    foreach (DirectoryInfo child in parent.GetDirectories()) 
    { 
     string newName = child.FullName.Replace('_', '-'); 

     if (newName != child.FullName) 
     { 
      child.MoveTo(newName); 
     } 
    } 
} 
+0

Спасибо;) Это работает. – cethint

Смежные вопросы