C# 是否将泛型类型发送到基类?

C# 是否将泛型类型发送到基类?,c#,generics,C#,Generics,通常,我就是这样为类属性创建泛型类型的: 我的模型看起来像: public class CustomerProfile<T> where T : class { public T Address{ get; set; } } 现在,我必须创建类层次结构,如下所示: public class Customer : CustomerProfile { public Customer Names { get; set; } } 现在,如何将类型C

通常,我就是这样为类属性创建泛型类型的:

我的模型看起来像:

public class CustomerProfile<T> where T : class 
{
   public T Address{ get; set; }
  }
现在,我必须创建类层次结构,如下所示:

  public class Customer : CustomerProfile
  {
       public Customer Names { get; set; }
   }
现在,如何将类型CustomerAddress类型发送到CustomerProfile类泛型类型

如何将类型CustomerAddress类型发送到CustomerProfile类泛型类型

您只需在声明中指定类型:

公共类客户:CustomerProfile
{
公共客户名称{get;set;}
}
如果您在编译时不知道
CustomerAddress
类型,则需要将
Customer
设置为泛型:

公共类客户:CustomerProfile
{
公共客户名称{get;set;}
}
然后获取
客户
键入的方式与当前获取
客户档案
的方式相同

我承认,你发布的其他代码看起来很奇怪。不清楚为什么要使用反射来实例化编译时已知类型参数的类型
typeof(CustomerProfile)
应该和您发布的基于反射的代码一样有效

而且有一个与声明类型具有相同类型的
Names
属性似乎很奇怪


但是,根据上面的示例,要为基类获取正确的类型参数,这是很简单的。

这里使用的最佳术语不是“发送”。我认为你想要的词是“分配”,也不清楚当你的类实际上是
CustomerProfile
时,你如何创建这个
公共类Customer:CustomerProfile
,而不得到编译器错误。这使得这个问题有点不明确,将军。。我遇到编译错误。。我只是放了代码来表达我的意图,你是在问如何在运行时动态创建
类Customer:CustomerProfile
。基本上使用我上面的代码来生成泛型类型并分配给基类。嗨,彼得:很抱歉把你搞糊涂了,我实际上发布了一个修改过的代码。我不会在编译时意识到类型。“我不会在编译时意识到类型”--这不是你问的问题。您的问题是要将
CustomerAddress
作为类型参数传递的。我会根据我对你实际意思的最佳猜测来更新答案,但是如果这不能解决你的问题,那么你需要修正你的问题,让它变得清晰。谢谢你,彼得。基本上,我希望使用上面的makegeneric类型代码生成泛型类型并将其分配给基类CustomerProfile“我希望使用上面的makegeneric类型代码生成泛型类型并将其分配给基类CustomerProfile”--使用您拥有的代码,唯一的方法是将派生类也设置为泛型,正如我上面解释的。如果您愿意引入.NET的运行时类型构建,则可以在运行时创建一个新类型,该类型继承封闭的泛型类型。看见当然,使用这种技术,您将无法对派生类型进行编译时访问。
  public class Customer : CustomerProfile
  {
       public Customer Names { get; set; }
   }