c# dynamic set property by string name