不知道你想做什么,但你可以使用=>
而不是=
// added =>
private TestGarden.Models.Plants pd => new PlantData().GetPlantInformation(PlantName);
您所做的称为字段初始化并使用=>
称为表达式主体的成员(如果名称错误,请有人纠正我)。
不同的是,当你使用时=>
,就像你在做这个
private TestGarden.Models.Plants pd
{
get
{
return new PlantData().GetPlantInformation(PlantName);
}
}
而一旦你得到pd
,它就会回来new PlantData().GetPlantInformation(PlantName)
。
using 给你错误的原因=
是你不能用另一个字段的值初始化一个字段,但是当你使用时=>
,你没有初始化它,你只会new PlantData().GetPlantInformation(PlantName)
在你得到时执行pd
。
编辑:
正如其他回答指出的那样,您可以使用OnInitialized
.
但是您需要了解为什么以及何时应该使用OnInitialized
或=>
.
你应该使用OnInitialized
ifnew PlantData().GetPlantInformation(PlantName)
来做一些异步的事情,比如从数据库中获取数据,因为如果你在属性的 getter 中调用该方法,并且它需要时间,它可能会冻结你的组件,直到数据库返回值。
如果它从数据库返回一些东西或者做一些可能是异步的,使用OnInitialized
,否则,使用=>
(表达式主体)是可以的。
还有一点...
如果使用OnInitialized
,new PlantData().GetPlantInformation(PlantName)
将只运行一次,如果PlantName
由于某种原因发生更改,pd
则不会更新 的值。
如果您使用=>
,它将始终运行,但在它已更改的情况下new PlantData().GetPlantInformation(PlantName)
将始终使用 的当前值。PlantName
所以有很多关于如何获得价值的思考new PlantData().GetPlantInformation(PlantName)