如何使用ReSharper为属性添加后备变量

时间:2014-02-02 20:40:01

标签: c# properties resharper

我已经使用ReSharper从代码中创建了属性(从一些太长的方法中移出):

private static SomeFunctions XmlSomeFunctions
{
    get
    {
        // some logic
        return someFunctions;
    }
}

但是,我希望它是这样的:

private static SomeFunctions xmlSomeFunctions;
private static SomeFunctions XmlSomeFunctions
{
    get
    {
        if (xmlSomeFunctions == null)
        { 
            // some logic
            xmlSomeFunctions = someFunctions;
        }
        return xmlSomeFunctions;
    }
}

但是我没有在ReSharper的上下文菜单中找到任何条目( Ctrl + Shift + R = Refactor This),这可能对我有帮助有了这个任务。有什么方法可以使用ReSharper自动创建上面的代码吗?

如果我不会重写此代码(现在手动,最好是使用ReSharper,如果我知道如何),如果我在代码中的不同位置请求XmlSomeFunctions,我会多次执行该逻辑(而不是一次)

2 个答案:

答案 0 :(得分:2)

你真正想要做的是创建一个懒惰的实例化属性。更好的方法是使用.Net中的Lazy类。重新使用这个类而不是尝试使用resharper自动化重复代码将是我的建议。

请参阅http://msdn.microsoft.com/en-us/library/dd642331(v=vs.110).aspx

答案 1 :(得分:1)

你确实有这种可能性。将光标放在属性名称(XmlSomeFunctions)上,然后单击左侧的锤子图标。

enter image description here

您必须自己添加if声明。