我已经阅读了其他一些答案以进行动态转换,但我不确定它们是否解决了我想要解决的问题,因此是这个问题。
我有一个界面
public interface ICustomTransmitter<T> : IDataTransmitter where T : EventArgs
{
event EventHandler<T> DataEvent;
}
以及一组允许我在运行时获取泛型类型参数的函数。这是为了转换为该类型并连接特定事件(这是思想代码,所以请温柔)
public bool IsTypeOf(Type baseType, Type interfaceType,
out Type argumenType)
{
var interfaces = baseType.GetInterfaces();
argumenType = null;
foreach (Type @interface in interfaces)
{
if (@interface.Name != interfaceType.Name) continue;
if (@interface.IsGenericType)
{
argumenType = @interface.GetGenericArguments()[0];
}
return true;
}
return false;
}
以及使用上述魔法的功能
Type argument;
var generic = typeof (ICustomTransmitter<>);
if (IsTypeOf(receiver.GetType(),generic ,out argument))
{
var created = generic.MakeGenericType(new[] {argument});
//the line of code missing is below
receiver as created
}
是否可以将接收器转换为创建的类型?此外,我需要有一个适用于 dot net 3.5 和 dot net 4 的解决方案。