我需要一种方法将一个对象转换为编译时未知的类型。
类似于这样:
object obj;
public (type of obj) Obj
{
get
{
return obj
}
set
{
obj = (type of obj)value;
}
}
唯一已知的是obj是一个值类型。 我怀疑这样的事情是否可能。只是检查看看是否有人有巧妙的方法来做到这一点。
我需要一种方法将一个对象转换为编译时未知的类型。
类似于这样:
object obj;
public (type of obj) Obj
{
get
{
return obj
}
set
{
obj = (type of obj)value;
}
}
class MyClass<T> where T: struct
{
T obj;
public T Obj
{
get { return obj; }
set { obj = value; }
}
}
MyClass<int> test = new MyClass<int>();
test.Obj = 1;
现在,实际类型定义作为泛型类型参数已经在您的类之外了。严格来说,尽管类型在编译时是已知的,但它仍然是静态的。
好的,您可以使用泛型来实现此操作:
public class IAcceptValueTypes<T> where T: struct
private T obj;
public T Obj
{
get { return obj; }
set { obj = value; }
}
where T: struct
会限制接受的类型为值类型。你为什么需要这种类型的转换?
我目前没有Visual Studio在我面前尝试,但你为什么不查一下: