I have a custom class that relies on the generic type T to be passed. I only know what type is in string form, because that is how it is sent. I searched around but can't seem to find what I need. I can parse the string value for the type, but I need to parse it into ... something that I can pass as a generic parameter.
I rewrote my problem as such:
// Classes structure namespace Mynamespace { public interface IRequest { } public interface IHandler<T> where T : IRequest { void Handle(T item); } public class MyRequest : IRequest { } public class MyHandler : IHandler<MyRequest> { void Handle(MyRequest item) { } } } // The info I get, and I know typeString is a IRequest string typeString = "My"; object requestItem = [insert xml parsing here]; // I then create a handler, to handle the request Type typeHandler = Type.GetType("Mynamespace." + typeString + "Handler"); var handler = Activator.CreateInstance(typeHandler); Type typeRequest = Type.GetType("Mynamespace." + typeString + "Request"); // what I want to do: handler.Handle(requestItem);
I cannot do this because the handler and requestItem are just objects. Therefore, I need to parse the "handler" to "typeHandler" and the requestItem to "typeRequest"
Edit: I figured this out, I used InvokeMember to access it. :)
typeHandler.InvokeMember("Handle", BindingFlags.InvokeMethod, null, handler, new[] { requestItem });
FrieK source share