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; }
}