C# 从其他函数调用属性时,当前上下文中不存在变量
我有一个函数中存在的以下模型。其中一个属性正在调用另一个函数,但我得到的变量不在范围内。月底,日底 所有这些背后的逻辑是使用EndOn properties的部分日期填充serviceYear。 我确实理解这个错误,只是不知道如何解决这个问题C# 从其他函数调用属性时,当前上下文中不存在变量,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个函数中存在的以下模型。其中一个属性正在调用另一个函数,但我得到的变量不在范围内。月底,日底 所有这些背后的逻辑是使用EndOn properties的部分日期填充serviceYear。 我确实理解这个错误,只是不知道如何解决这个问题 public ProgramSchedule GetProgramScheduleEditViewModel() { var newModel = new ProgramSchedule(customerProgram.RepeatBy) {
public ProgramSchedule GetProgramScheduleEditViewModel()
{
var newModel = new ProgramSchedule(customerProgram.RepeatBy)
{
EndOn = Value;
ServiceYear = GetServiceYearWithDefault(),
};
return newModel;
}
public DateTime GetServiceYearWithDefault()
{
int defaultYear = ((short?)GetParameterValue(ParameterConfiguration.GeneralParameterKeys.Year)) ??
(int)DateTime.Now.Year;
//End.Month and End.Now.Day is where the variable is out of scope
DateTime Final = new DateTime(defaultYear, EndOn.Month, EndOn.Day);
return Final;
}
我不会说谎:你的逻辑在我看来很复杂。可以解决您的问题但会使问题更加复杂的是接受DateTime作为GetServiceYearWithDefault的参数,如下所示:
public DateTime GetServiceYearWithDefault (DateTime endOn)
{
int defaultYear = ((short?)GetParameterValue(
ParameterConfiguration.GeneralParameterKeys.Year)
) ?? (int) DateTime.Now.Year;
DateTime Final = new DateTime(defaultYear, endOn.Month,
endOn.Day);
return Final;
}
现在更改第一个方法,将EndOn作为DateTime参数传递给GetProgramScheduleEditViewModel:
是结束了,一个月又一个月,现在是大邑还是结束了,一个月又一个月,现在是天?是的,也许你指的是结束了,一个月而不是结束了。我们也看不到GetProgramScheduleEditViewModel中的值来自何处。请查看指南并相应发布。现在还不清楚为什么基于代码,你希望End神奇地出现在任何地方,甚至EndOn,如果你想写的是EndOn,我总是想知道为什么OPs会发布无法编译的代码。EndOn=值;既有价值又有价值;,End.Now.Day可能是End.Day、GetServiceYearWithDefault、逗号等。。实现这一点不需要额外的努力吗?复制和粘贴不是更容易吗?哦,有了EndOn和EndOn.Day,但是EndOn=Value;仍然存在。
public ProgramSchedule GetProgramScheduleEditViewModel ()
{
var newModel = new ProgramSchedule(customerProgram.RepeatBy)
{
EndOn = Value;
ServiceYear = GetServiceYearWithDefault(EndOn);
};
return newModel;
}