我有一个泛型类,我想要转换为动态泛型,但我得到一个Cannot convert type MyGeneric1<MyTypedClass1> to MyGeneric1<dynamic>
错误消息。这种演员是否可以dynamic
,如果是,请解释。
以下是我尝试将类型MyGeneric1
通用类投射到dynamic
MyGeneric1
的位置。
public static class Extensions
{
public static MyGeneric1<dynamic> ToDynamic(this MyGeneric1<MyTypedClass1> myObj1)
{
return (MyGeneric1<dynamic>)myObj1;
}
}
MyGeneric1
类的定义如下:
public class MyGeneric1<T> : DynamicObject { // Code here ... }
MyTypedClass1
类的定义如下:
public class MyTypedClass1: DynamicObject { // Code here ... }
答案 0 :(得分:0)
MyTypedClass1可以分配给动态,因为它继承自动态。但是,当它们具有不同的泛型参数时,你不能简单地转换泛型类,即使参数本身对于赋值有效(如MyTypedClass1和动态)。
但是,您可以使用适当的泛型类型创建新实例并为其指定值:
public class MyTypedClass1 : DynamicObject
{
public string SomeProperty { get; set; }
}
public class MyGeneric<T> : DynamicObject
{
// just some property to get the idea
public T Value { get; set; }
}
public static class MyGenericExtensions
{
public static MyGeneric<dynamic> ConveretGeneric(this MyGeneric<MyTypedClass1> argument)
{
return new MyGeneric<dynamic>()
{
// here you need to assign all needed properties
Value = argument.Value
};
}
}