I am getting the following error when I try to pass in x.Bar in the RegisterMethod.
Member 'TestProject2.Foo.Bar.get' cannot be accessed with an instance reference; qualify it with a type name instead
Q. Is it possible at all to keep Bar property static?
namespace TestProject2
{
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
RegisterMethod<Foo, string>(x => x.Bar); <-- error here
}
static void RegisterMethod<TSelf, TProp>(Expression<Func<TSelf, TProp>> expression)
{
var member_expression = expression.Body as MemberExpression;
if (member_expression == null)
return;
var member = member_expression.Member;
if (member.MemberType != MemberTypes.Property)
return;
var property = member as PropertyInfo;
Console.WriteLine(property.Name);
Console.WriteLine(property.DeclaringType);
}
}
public class Foo
{
private string _bar;
public static string Bar <-- would very much want to keep this static
{
get { return _bar; }
set { _bar = value; }
}
}
}