I am attempting to move validation of input data into the get;set; of a class struct.
public void PlotFiles()
    {
     List<DTVitem.item> dataitems;
        DTVitem.item i;
        DateTime.TryParse("2012/01/01", out i.dt);
        DateTime.TryParse("04:04:04", out i.t);
        int.TryParse("455", out i.v);
        dataitems.Add(i);
    }
The struct is declared in a separate class (probably unnecessary):
public partial class DTVitem
{
    public struct item
    {
        public DateTime dt;
        public DateTime t;
        public int v;
    }
}
Every time I set DTVitem.item.dt, DTVitem.item.t, or DTVitem.item.v, I wish it to perform the relevant .TryParse() to validate the property contents.
However, when I attempt to use TryParse() as follows (attempting to wrap my head around this example from MSDN):
public partial class DTVitem
{
    private DateTime _datevalue;
    public string dt
    {
        get { return _datevalue; }
        set { DateTime.TryParse(value, out _datevalue) ;}
    }
}
I receive the error that _datevalue is a DateTime and cannot be converted to a string.  The reason is obviously that the return path must return the type of dt in this instance (a string).  However, I have attempted to massage this a few different ways, and am not able to hack it.
How do I achieve my goal of validating a string value as a DateTime when setting it as a property of an instance of the struct?
Is using set as I am attempting to the best way?
I can see that there is a lot of value in using get;set; for validation and would really like to understand it.
Thanks very much,
Matt
[edit]
Thanks to Jon Skeet below for pointing out the err of my ways.
Here's another thread on problems with mutable structs, and another speaking about instantiating a struct. Note structs are value types.
I believe the rest of what he was pointing out is sort of just agreeing that burying the struct way far away isn't necessary, and I should review why I'm doing it.
[solution]
I've taken into account some recommendations below and come up with the following:
public partial class DTVitem
{
    private DateTime _dtvalue, _tvalue;
    private int _vvalue;
    public string dt
    {
        get { return _dtvalue.ToString(); }
        set { DateTime.TryParse(value, out _dtvalue); }
    }
    public string t
    {
        get { return _tvalue.ToString(); }
        set { DateTime.TryParse(value, out _tvalue); }
    }
    public string v
    {
        get { return _vvalue.ToString(); }
        set { int.TryParse(value, out _vvalue); }
    }
}
Inside my program class, I've instantiated and set with the following:
DTVitem item = new DTVitem();
item.dt = "2012/01/01";
item.t = "04:04:04";
item.v = "455";
So I opted not to use a struct, but a class; or really an instance of the class.
 
     
     
     
     
     
    