从字符串值泛型类型 [英] Generic type from string value
问题描述
我有一个自定义类,谁依赖于一个通用类型T被传承下去。
我只知道这是一个字符串形式是什么类型的,因为这是它如何被发送。我一直在寻找周围,但似乎无法找到正是我需要的。
我可以解析字符串值类型,但我需要将它解析为...什么的,我可以通过一个通用的参数。
我已经重写我的问题,因为这样的:
//类结构
命名了myNameSpace
{
公共接口IRequest
{
}
公共接口IHandler< T>其中T:IRequest
{
无效手柄(T项目);
}
公共类MyRequest:IRequest
{
}
类公共MyHandler的:IHandler< MyRequest>
{
无效手柄(MyRequest项目)
{
}
}
}
//的信息,我得到的,我知道typeString是IRequest
串typeString =我;
对象requestItem = [插入XML解析这里]
//我再创建一个处理程序,处理请求
类型类型控制器= Type.GetType(myNameSpace对象。+ typeString +处理器);
VAR处理器= Activator.CreateInstance(类型控制器);
型typeRequest = Type.GetType(+ typeString +请求,myNameSpace对象。);
//我想做的事:
handler.Handle(requestItem);
我不能这样做,因为处理程序,并requestItem只是对象
所以我需要解析处理到类型控制器,并requestItem为typeRequest
编辑:
我想通了,我用InvokeMember访问它。 :)
typeHandler.InvokeMember(处理,BindingFlags.InvokeMethod,空,处理程序,新的[] {requestItem});
我想通了,我用InvokeMember访问它。 :)
typeHandler.InvokeMember(处理,BindingFlags.InvokeMethod,空,处理程序,新的[] {requestItem});
I got a custom class, who relies on a generic type T to be passed along. I only know what type it is in string form, because that's how it's being sent. I've been searching around but can't seem to find exactly what I need. I can parse the string value to a type, but I need to parse it to... something, that I can pass as a generic parameter.
I've rewritten 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 can't do that because handler and requestItem are just objects So I need to parse 'handler' to 'typeHandler', and requestItem to 'typeRequest'
Edit: I figured it out, I used InvokeMember to access it. :)
typeHandler.InvokeMember("Handle", BindingFlags.InvokeMethod, null, handler, new[] { requestItem });
I figured it out, I used InvokeMember to access it. :)
typeHandler.InvokeMember("Handle", BindingFlags.InvokeMethod, null, handler, new[] { requestItem });
这篇关于从字符串值泛型类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!