tags:

views:

77

answers:

2

I have a function that accepts a generic parameter T that is of type class like so :

public  Func<T, bool> MyMethod<T>(string paramName, object value) where T : class

But when calling the function I do not have direct access to the class that needs to be the parameter.

MyMethod<foo>("foo1", "foo2")

Is there a way I can get the class foo via other means like reflection so I can use the function?

UPDATE:

This method in particular performs a Lambda expression through LINQ and checks if the parameter value is equal to the value I passed... So T value will not make sense i.e. that's why I need an object type. Also My real problem is that I can't do something like;

MyMethod<fooInstance>("foo1","foo2")

and I need to get a reference of the Type rather than class. This because the class name is encrypted so i need to get the Type reflection using the Activator class and assign the object returned to the generic call of MyMethod function

example:

object o = Activator.CreateInstance(Type.GetType(Assembly.GetExecutingAssembly().GetName().Name + ".Foo"));
    MyMethod<o.getType()>("foo1","foo2");
+3  A: 

You can use

Type type = typeof(T);

to get the type passed in as T.

Robert Davis
A: 

If I understand you question correctly I don't think you'll get much gain in using a generic method here.

It would be useful if your method signature where:

public Func<T, bool> MyMethod<T>(string paramName, T value) where T : class
bruno conde