将泛型 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
           };
       }
   }