不知道你想做什么,但你可以使用=>而不是=
// 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或=>.
你应该使用OnInitializedifnew PlantData().GetPlantInformation(PlantName)来做一些异步的事情,比如从数据库中获取数据,因为如果你在属性的 getter 中调用该方法,并且它需要时间,它可能会冻结你的组件,直到数据库返回值。
如果它从数据库返回一些东西或者做一些可能是异步的,使用OnInitialized,否则,使用=>(表达式主体)是可以的。
还有一点...
如果使用OnInitialized,new PlantData().GetPlantInformation(PlantName)将只运行一次,如果PlantName由于某种原因发生更改,pd则不会更新 的值。
如果您使用=>,它将始终运行,但在它已更改的情况下new PlantData().GetPlantInformation(PlantName)将始终使用 的当前值。PlantName
所以有很多关于如何获得价值的思考new PlantData().GetPlantInformation(PlantName)