繁体   English   中英

System.MissingMethodException:找不到方法:'System.String .get_DayName()'

[英]System.MissingMethodException: Method not found: '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加载到另一个List:

    var timeBandRange = new List<TimeBand>();

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

这工作正常,但在TimeBand类中,我决定将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()'。

知道为什么吗?

谢谢

也许你只需要重新编译? 我在本地运行此代码,它工作正常。

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();
                }
            }

我以前遇到过同样的问题。 我有一个引用类库的SharePoint项目。 在.net 4.0及更高版本中,DLL将插入此位置: C:\\Windows\\Microsoft.NET\\assembly\\GAC_MSIL\\ 因此,如果您得到与上面相同的错误,那么您需要重新构建解决方案并再次在GAC_MSIL中部署DLL,否则它仍将引用旧的DLL。

在我的情况下,问题是,我已经在库中将属性类型从字符串更改为int。 在另一个项目中,在编译时分配给动态变量的属性变量不会产生任何错误,但在运行时会抛出此错误。 为了解决这个问题,我需要编译具有动态变量赋值的项目,该项目没有任何变化。 现在它工作正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM