2016-06-14 3 views
1
get 
{ 
    string dirName = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 
    string pathName; 
    DirectoryInfo d = new DirectoryInfo("TradeBotData"); 
    if (!d.Exists) 
    { 
     if (d.Parent.Name.ToString() == "Plugins") 
     { 
      d.Create(); 
      return d.FullName; 
     } 
    } 
    else 
    { 
     if (d.Parent.Name.ToString() == "Plugins") 
     { 
      return d.FullName; 
     } 
     else 
     { 
      Console.WriteLine("Data path Fallback!!!"); 
      pathName = System.IO.Path.Combine(dirName, @"\TradeBotData"); 
      System.IO.Directory.CreateDirectory(pathName); 
      Console.WriteLine("Created Save Folder At: {0} :", pathName); 
      return pathName; 
     } 
    } 
} 

이 문제가 발생하는 이유는 확실하지 않습니다. 나는 ifelse을 가지고 있기 때문에 모든 코드 경로가 값을 반환한다고 생각합니다. return "";을 코드에 삽입하면 ""; 무한히.C# 컴파일러 반환 오류 모든 코드 경로가 값을 반환하지 않습니다.

알려 주시기 바랍니다.

+3

을 당신이 뭔가를 반환해야 할 때'경우 (d.Parent.Name.ToString() == "플러그인") ' 실패합니다. –

+3

Hari의 설명을 확장하려면 : 디렉토리가 존재하지 않는 경우, 첫 번째'if' 문장의 본문에 들어갑니다. 만약 부모 이름이'Plugins'이 아니라면 아무 것도 반환하지 않습니다. –

답변

3

경우이 경우 d.Parent.Name.ToString() == "Plugins"에서, if 문을 withing에 코드가 실행되지만, 그렇지 않으면 컴파일러는 예외가 발생합니다 경우 DirectoryInfo는 컴파일러가 확인합니다 존재하지 않습니다 : "모든 코드 경로가 값을 반환하지를"을 반환하지 않기 때문입니다.

그래서 당신은 return 여기에 누락 :

get 
{ 
string dirName =System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 
    string pathName; 
    DirectoryInfo d = new DirectoryInfo("TradeBotData"); 
    if (!d.Exists) 
    { 
     if (d.Parent.Name.ToString() == "Plugins") 
     { 
      d.Create(); 
      return d.FullName; 
     } 
    //////////HERE/////// 
    } 
    else 
    { 
     if (d.Parent.Name.ToString() == "Plugins") 
     { 
      return d.FullName; 
     } 
     else 
     { 
      Console.WriteLine("Data path Fallback!!!"); 
      pathName = System.IO.Path.Combine(dirName, @"\TradeBotData"); 
      System.IO.Directory.CreateDirectory(pathName); 
      Console.WriteLine("Created Save Folder At: {0} :", pathName); 
      return pathName; 
     } 
    } 
} 
+0

이 문제를 해결하기 위해 op가 원하는 것은 무엇입니까? –

+0

운이 좋았어. 무슨 뜻인지 잘 모르겠다. – user3378165

+0

문제를 확인했다. 해결책을 제시하기 위해 해결책을 제시해야한다. –

0

초기화 또는 경로 이름 빈 문자열에. 그럼 그냥 반환 귀하의 경우/다른 논리와와 get의로 설정 :

get 
      { 
       string dirName = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 
       string pathName = String.Empty; 
       DirectoryInfo d = new DirectoryInfo("TradeBotData"); 
       if (!d.Exists) { 
       if (d.Parent.Name == "Plugins") { 
        d.Create(); 
        pathName = d.FullName; 
       } 
       } else { 
       if (d.Parent.Name == "Plugins") { 
        pathName = d.FullName; 
       } else { 
        Console.WriteLine("Data path Fallback!!!"); 
        pathName = System.IO.Path.Combine(dirName, @"\TradeBotData"); 
        System.IO.Directory.CreateDirectory(pathName); 
        Console.WriteLine("Created Save Folder At: {0} :", pathName); 

       } 
       } 

       return pathName; 
      } 
관련 문제