Adr*_*vel 7 c# generics reflection
所以我有一个带有隐式转换的Generic类(它主要是一个容器类),如下所示:
public class Container<T>
{
public T Value { get; set; }
public static implicit operator T(Container<T> t)
{
return t.Value;
}
public static implicit operator Container<T>(T t)
{
return new Container<T>() { Value = t };
}
}
Run Code Online (Sandbox Code Playgroud)
所以在运行时我想Container<int>使用反射转换为int 的实例,但似乎无法找到方法,我已经尝试了在几个地方提到的"Cast"方法调用,但我得到了一个Specified cast is not valid.异常.
任何帮助将不胜感激.
除非有问题的类型是您无法修改的程序集内部,否则几乎没有理由这样做.
但如果是这样的话,我个人更喜欢看起来更清洁的dynamic解决方案(如jbtule所述)来反思.
但是既然你要求使用反射的解决方案(也许你在.NET 3.5或更早版本?),你可以这样做:
object obj = new Container<int>();
var type = obj.GetType();
var conversionMethod = type.GetMethod("op_Implicit", new[] { type });
int value = (int)conversionMethod.Invoke(null, new[] { obj });
Run Code Online (Sandbox Code Playgroud)