Dynamically convert property to different data type
I think you kind of reinventing the wheel a bit here. You could use the ValidationAttribute.  

Since C# doesn't allow generics in Attribute classes you either have to create an attribute per type or use an enum to specific what type.  I personally prefer an attribute per type.  

An Example of use the ValidationAttrubte for DecimalParser 

public class DecimalParserAttribute : ValidationAttribute
{
    public DecimalParserAttribute() : base("Cannot convert to decimal")
    {
    }

    public override bool IsValid(object value)
    {
        if (value == null)
        {
            return false;
        }

        var stringValue = Convert.ToString(value);

        decimal decimalResult;
        return decimal.TryParse(stringValue, out decimalResult);
    }
}


Now to perform the validation you need to use the Validator Class 

var p = new Product() {NoOfItems = "1", GRodes = "4w", Weight = "5", WRodes = "2q3"};
var validationResults = new Collection&lt;ValidationResult&gt;();
if (!Validator.TryValidateObject(p, new ValidationContext(p), validationResults, true))
{
    // If we are here there was validation errors 
    var x = string.Join(Environment.NewLine,
        validationResults.SelectMany(r =&gt; r.MemberNames.Select(n =&gt; n + " " + r.ErrorMessage)));
}


This to me fits more in with what you are doing, validation, with the benefit of using the built in .Net Framework classes.