将通用子文件夹<SomeType>转换为子文件夹<object>?



我有一个泛型类型,它基本上是另一个类(出于序列化目的(ChildFolder<SomeType>的包装器。

[Serializable]
public class ChildFolder<T>
{
public T value;
}

我引用了ChildFolder<>其当前为类型CCD_ 2。无论T是什么,我都需要能够访问该对象的.value——将其作为object获取是完美的。我希望泛型类型能够遵循参数类的遗传性规则,这样就可以了:

object obj = new ChildFolder<SomeClass>(); // (this is equivalent to what's coming in to the function as a parameter)
ChildFolder<object> chObj = (ChildFolder<object>)obj;
// and now chObj.value is of type object

但这条线给了我InvalidCastException: Specified cast is not valid.

如果我不知道<T>是什么,我如何打字到ChildFolder?或者,如何在不进行类型转换的情况下访问.value?

更新:我通过创建一个非通用基类解决了这个问题

[Serializable]
public class ChildFolder<T> : ChildFolderBase
{
public T value
{
get
{
return (T)valueAsObject;
}
set
{
valueAsObject = value;
}
}
public static implicit operator T(ChildFolder<T> cf)
{
return cf.value;
}
}
public class ChildFolderBase
{
public object valueAsObject;
}

我可以很容易地转换到ChildFolderBase并获得.valueAsObject.

最新更新