C# c语言中的动作方法#
我只想让他告诉我入口处发生了什么变化。当我希望在select方法的输入中获得相同的值时,我希望在action输出中获得相同的值,而不是整个properties类WeatherForecastC# c语言中的动作方法#,c#,methods,reflection,action,C#,Methods,Reflection,Action,我只想让他告诉我入口处发生了什么变化。当我希望在select方法的输入中获得相同的值时,我希望在action输出中获得相同的值,而不是整个properties类WeatherForecast public class WeatherForecast { public DateTime Date { get; set; } public int TemperatureC { get; set; } public int TemperatureF => 32 + (i
public class WeatherForecast
{
public DateTime Date { get; set; }
public int TemperatureC { get; set; }
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
public string Summary { get; set; }
}
public void method(){
Select(d=>
{
d.Summary = "dasd";
d.TemperatureC = 25;
});}
private void Select(Action<WeatherForecast> func)
{
var result = new WeatherForecast();
func(result);
foreach (var item in result.GetType().GetProperties())
{
RaisePropertyChanged(item.Name);
}
var ss = func;
}
公共类天气预报
{
公共日期时间日期{get;set;}
public int TemperatureC{get;set;}
公共内部温度F=>32+(内部)(温度C/0.5556);
公共字符串摘要{get;set;}
}
公开作废法(){
选择(d=>
{
d、 Summary=“dasd”;
d、 温度c=25;
});}
专用无效选择(操作功能)
{
var结果=新天气预报();
func(结果);
foreach(result.GetType().GetProperties()中的变量项)
{
RaisePropertyChanged(项目名称);
}
var ss=func;
}
''基本上,这不是一件你可以做的小事。您可以在这里使用三种通用方法:
WeatherForecast
类型中,这样它就知道发生了什么更改(通常使用某种重置方法将所有内容标记为未更改,并在每个setter中编码以将单个属性记录为已更改)表达式
-树,则解释此处提出的更改-但是:C编译器无法将问题中的代码解释为表达式
-树(即使可以生成此树的表达式
-树)private int\u dirtyFlags;
public void ResetAllChanges()=>\u dirtyFlags=0;
私人日期时间(日期);;
公共日期时间日期
{
获取=>\u日期;
设置
{
如果(_date!=value)_dirtyFlags |=1(_dirtyFlags&(1)temperatureC;
设置
{
如果(_temperatureC!=value)_dirtyFlags |=1(_dirtyFlags&(1),基本上这不是一件简单的事情。这里可以使用三种常用方法:
将更改跟踪添加到WeatherForecast
类型中,这样它就知道发生了什么更改(通常使用某种重置方法将所有内容标记为未更改,并在每个setter中编码以将单个属性记录为已更改)
使用外部更改跟踪器,以某种方式记录shapshot中的原始状态,然后稍后:将其与当前值进行比较
如果使用表达式
-树,则解释此处提出的更改-但是:C编译器无法将问题中的代码解释为表达式
-树(即使可以生成此树的表达式
-树)
其中,除非你有很多空闲时间,否则在这里只有第一种方法是可行的。比如:
private int\u dirtyFlags;
public void ResetAllChanges()=>\u dirtyFlags=0;
私人日期时间(日期);;
公共日期时间日期
{
获取=>\u日期;
设置
{
如果(_date!=value)_dirtyFlags |=1(_dirtyFlags&(1)temperatureC;
设置
{
如果(_temperatureC!=value)_dirtyFlags |=1(_dirtyFlags&(1)请显示a-您如何调用Select方法?我在理解问题描述时遇到困难。我在main method中调用我的Select方法,我可以尝试并解释吗?您正在寻找一种方法来发现Summary
和TemperatureC
是已更改的内容,因此您只需执行RaiseProperty即可yChanged
对于那些-是这样吗?我只想给出方法中修改的属性请显示a-您如何调用选择方法?我在理解问题描述时遇到困难。我在main method中调用我的选择方法我可以尝试解释吗?您正在寻找一种方法来发现摘要
和TemperatureC
是已更改的内容,因此您只需对这些内容执行RaisePropertyChanged
,对吗?我只想在方法中给出修改后的属性