Following on from my earlier question: [c-sharp-convert-existing-class-to-use-properties-correctly](https://stackoverflow.com/questions/40471294/c-sharp-convert-existing-class-to-use-properties-correctly/40471348?noredirect=1#comment68187680_40471348)

I have a class like this:

```
public class TestCaseInfo
{
    public string text { get; set; } = "";
    public string requirement_ref { get; set; } = "";
    public string given { get; set; } = "";
    public string when { get; set; } = "";
    public string then { get; set; } = "";
    public UInt32 timeLimit { get; set; } = 0;
}

```

I was previously populating the structure like this:

```
if (!getNodeValue(testcase_node.SelectSingleNode("text"), ref testcaseInfo.text))
    errStr += nodeError(testcase_node, "Missing 'text' node");

```

Note: that I am trying to pass it by reference. I have read a load of quetions that all basically say that you can't do this. Fair enough...

So I want to pass in the "real" value (I think its called the backing value?) instead. Something like:

```
if (!getNodeValue(testcase_node.SelectSingleNode("text"), ref testcaseInfo._text)) // where '_text' should be the 'backing' value.
    errStr += nodeError(testcase_node, "Missing 'text' node");

```

But I am missing two things (probably more!):

1. What is the backing value called?
2. I assume its private? - can I make it protected and make it a friend class? (that might be C++ talk... not sure if there is the same idea in C#)?