C# Pass a property by reference
.net, c#, pass-by-reference, properties
Solution
You can call the function with a lambda expression:
private void setFromQueryString<T>(Action<T> setter, String queryString, HttpContext context)
{
//here I want to handle pulling the values out of
//the query string and parsing them or setting them
//to null or empty string...
String valueString = context.Request.QueryString[queryString].ToString();
//I need to check the type of the property that I am setting.
//this is null so I can't check it's type
Type t = typeof(T);
...
setter(value);
}
You would call it like this:
setFromQueryString<int>(i => myFoo.Age = i, "inputAge", context);
EDIT: If you really want type inference:
private void setFromQueryString<T>(Func<T> getter, Action<T> setter, String queryString, HttpContext context) {
...
}
setFromQueryString(() => myFoo.Age, i => myFoo.Age = i, "inputAge", context);
Problem
Is there anyway to pass the property of an Object by reference? I know I can pass the whole object but I want to specify a property of the object to set and check it's type so I know how to parse. Should I maybe take another approach (I cannot change the original object in anyway)? ``` public class Foo{ public Foo(){} public int Age { get; set; } } private void setFromQueryString(object aProperty, String queryString, HttpContext context) { //here I want to handle pulling the values out of //the query string and parsing them or setting them //to null or empty string... String valueString = context.Request.QueryString[queryString].ToString(); //I need to check the type of the property that I am setting. //this is null so I can't check it's type Type t = aProperty.GetType(); } private void callingMethod(HttpContext context) { Foo myFoo = new Foo(); setFromQueryString(myFoo.Age, "inputAge", context); } ```