将泛型 class 转换为动态类型
Casting generic class to dynamic type
我有一个泛型 class,我想将其转换为动态泛型,但我收到一条 Cannot convert type MyGeneric1<MyTypedClass1> to MyGeneric1<dynamic>
错误消息。这种转换为 dynamic
可能吗,如果可以,请解释一下。
这是我尝试将类型化的 MyGeneric1
泛型 class 转换为 dynamic
MyGeneric1
.
的地方
public static class Extensions
{
public static MyGeneric1<dynamic> ToDynamic(this MyGeneric1<MyTypedClass1> myObj1)
{
return (MyGeneric1<dynamic>)myObj1;
}
}
MyGeneric1
class 定义如下:
public class MyGeneric1<T> : DynamicObject { // Code here ... }
MyTypedClass1
class 定义如下:
public class MyTypedClass1: DynamicObject { // Code here ... }
MyTypedClass1 可分配给 dynamic,因为它继承自 dynamic。但是,当它们具有不同的泛型参数时,您不能简单地转换泛型 类,即使参数本身对于分配有效(如 MyTypedClass1 和 dynamic )。
但是,您可以创建具有适当泛型类型的新实例并为其赋值:
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
};
}
}
我有一个泛型 class,我想将其转换为动态泛型,但我收到一条 Cannot convert type MyGeneric1<MyTypedClass1> to MyGeneric1<dynamic>
错误消息。这种转换为 dynamic
可能吗,如果可以,请解释一下。
这是我尝试将类型化的 MyGeneric1
泛型 class 转换为 dynamic
MyGeneric1
.
public static class Extensions
{
public static MyGeneric1<dynamic> ToDynamic(this MyGeneric1<MyTypedClass1> myObj1)
{
return (MyGeneric1<dynamic>)myObj1;
}
}
MyGeneric1
class 定义如下:
public class MyGeneric1<T> : DynamicObject { // Code here ... }
MyTypedClass1
class 定义如下:
public class MyTypedClass1: DynamicObject { // Code here ... }
MyTypedClass1 可分配给 dynamic,因为它继承自 dynamic。但是,当它们具有不同的泛型参数时,您不能简单地转换泛型 类,即使参数本身对于分配有效(如 MyTypedClass1 和 dynamic )。
但是,您可以创建具有适当泛型类型的新实例并为其赋值:
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
};
}
}