gpt4 book ai didi

c# - 为什么它总是一个空值?

转载 作者:太空宇宙 更新时间:2023-11-03 20:28:34 25 4
gpt4 key购买 nike

好的,我得到了下面的类,但是当我 GetIstance(); Visual Studio 显示时,item 总是空的:

字段“PageStyle.item”从未分配给,并且始终具有默认值 null

我该如何解决这个问题?我究竟做错了什么?有没有更好的方法来完成下面所做的事情?

public class PageStyle
{

private static PageStyle _Instance = null;

// Instantiate variables relating to sitecore item paths.
Database webDB;
Sitecore.Data.Items.Item item;

// constructor
private PageStyle()
{
if (webDB != null)
{
webDB = Sitecore.Configuration.Factory.GetDatabase("web");
Sitecore.Data.Items.Item item = webDB.Items[StartItem];
}
}

// Method that gets instance
public static PageStyle GetInstance()
{
if (_Instance == null)
_Instance = new PageStyle();
return _Instance;
}

private void InitializeWebDB()
{
if (webDB == null)
{
webDB = Sitecore.Configuration.Factory.GetDatabase("web");
}

}

private void InitializeStartItem()
{
if (webDB != null)
{
item = webDB.Items[StartItem];
}
}

public string StartItem
{
get
{
return _startItem;
}

set
{
_startItem = value;
}
}
}

最佳答案

您永远不会将其设置为一个值。您可能认为是这样,但实际上您只设置了同名的局部变量。此外,您在 webDB 变量始终为 null 时检查其是否为非空值:

// constructor
private PageStyle()
{
if (webDB != null)
{
webDB = Sitecore.Configuration.Factory.GetDatabase("web");
Sitecore.Data.Items.Item item = webDB.Items[StartItem];
}
}

将此更改为:

// constructor
private PageStyle()
{
this.webDB = Sitecore.Configuration.Factory.GetDatabase("web");
this.item = webDB.Items[StartItem];
}

我假设您总是需要一个数据库实例,并且您的 if (webDB != null) 是一个错误。

关于c# - 为什么它总是一个空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8907558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com