2013-05-20 69 views
2

我有以下類型:system.missingMethodException而:未找到方法: 'System.String .get_DayName()'

public class TimeBand 
{ 
    public string DayName { get; set; } 
    public int customerId { get; set; } 
} 

和我創建一個列表包含TimeBands:

var TimeBandList = new List<TimeBand> 
    { 
     new TimeBand() 
      { 
       DayName = DayOfWeek.Monday.ToString(), 
       customerId = 10 
      }, 
     new TimeBand() 
      { 
       DayName = DayOfWeek.Tuesday.ToString(), 
       customerId = 11 
      } 
      ..... 
    }; 

我使用以下方式將TimeBands加載到另一個列表中:

var timeBandRange = new List<TimeBand>(); 

    timeBandRange = TimeBandList.Where 
        (p => p.customerId == newCustomerId 
        && p.DayName == date.DayOfWeek.ToString()).ToList(); 

這工作正常,但在TimeBand I類決定從字符串所以代碼已經變成了這個樣子改變DAYNAME屬性DAYOFWEEK類型:

public class TimeBand 
{ 
    public DayOfWeek DayName { get; set; } 
    public int customerId { get; set; } 
} 

var TimeBandList = new List<TimeBand> 
    { 
     new TimeBand() 
      { 
       DayName = DayOfWeek.Monday, 
       customerId = 10 
      }, 
     new TimeBand() 
      { 
       DayName = DayOfWeek.Tuesday, 
       customerId = 11 
      } 
      ..... 
    }; 

    DateTime date = IndDate; 
    var timeBandRange = new List<TimeBand>(); 

    timeBandRange = TimeBandList.Where 
        (p => p.customerId == parameter.customerId 
        && p.DayName == date.DayOfWeek).ToList(); 

這個新代碼現在失敗的TimeBandList.Where線並給出以下錯誤:System.MissingMethodException:未找到方法:'System.String TimeBand.get_DayName()'。

任何想法爲什麼?

謝謝

+0

您是否嘗試過重建解決方案? – pascalhein

+0

但在重建之前清理它。 – Steve

+0

是的,我已經清理並重建,但仍然無法正常工作。 – 03Usr

回答

2

也許你只需要重新編譯?我在本地運行這個代碼,它工作正常。

class Program 
{ 
    static void Main(string[] args) 
    { 
     TimeBand.DoSomething(); 
    } 
} 


public class TimeBand 
{ 
    public DayOfWeek DayName { get; set; } 
    public int customerId { get; set; } 

    public static void DoSomething() 
    { 
     var TimeBandList = new List<TimeBand> 
      { 
       new TimeBand() 
        { 
         DayName = DayOfWeek.Monday, 
         customerId = 10 
        }, 
       new TimeBand() 
        { 
         DayName = DayOfWeek.Tuesday, 
         customerId = 11 
        } 
      }; 


      DateTime date = DateTime.Now; 
      var timeBandRange = new List<TimeBand>(); 

      timeBandRange = TimeBandList.Where 
          (p => p.customerId == 1 
          && p.DayName == date.DayOfWeek).ToList(); 
       } 
      } 
+0

感謝您嘗試這一點,重新編譯仍然沒有爲我工作。 – 03Usr

+5

@ 03Usr,如果它不適合你,它不應該被接受。所以,要獲得*正確*答案,而不是「即使他們不工作,在特定時間範圍內的最佳答案」:-) – paxdiablo

2

我以前有同樣的問題。我有一個引用類庫的SharePoint項目。在.net 4.0及更高版本中,DLL將被插入此位置:C:\Windows\Microsoft.NET\assembly\GAC_MSIL\。 因此,如果你得到與上面相同的錯誤,那麼你需要重新構建你的解決方案並再次在GAC_MSIL中部署你的DLL,否則它仍然會引用舊的DLL。

0

在我的情況下,問題是,我已經將屬性類型從字符串更改爲int在庫中。而在另一個項目中,屬性變量在編譯時分配給一個動態變量不會給出任何錯誤,但在運行時它會拋出這個錯誤。爲了解決這個問題,我需要編譯具有動態變量賦值的項目,該變量沒有任何變化。現在它工作正常。

相關問題