我尝试使用模型绑定提供程序对绑定建模。
当GetBinder
方法被点击时,我想根据传入的内容提供模型绑定器。
我有一个通用模型IBaseModel<T> where T : IEntity
。
我可以从类型中抓取BaseModel
,但我真正想要的是<T>
BaseModel<T>
上的IEntity
。
public IModelBinder GetBinder(Type modelType)
{
Type baseModel = modelType.GetInterface(typeof(IBaseModel<>).Name);
if (baseModel != null)
{
if (baseModel.IsGenericType)
{
//want to get <T> (IEntity) here.
}
}
提前致谢
答案 0 :(得分:0)
我知道您希望获得通用参数的类型,您可以尝试这样做:
public static Type GetBinder(Type modelType)
{
Type baseModel = modelType.GetInterface(typeof (IBaseModel<>).Name);
if (baseModel != null)
{
if (baseModel.IsGenericType)
{
var interfacesTypes = modelType.GetInterfaces();
var typeGeneric = interfacesTypes.FirstOrDefault(x => x.IsGenericTypeDefinition);
if (typeGeneric != null)
{
return typeGeneric.GetGenericArguments().First();
}
}
}
return null;
}
public interface IBaseModel<T> where T : IEntity
{
}
public class Musica : IBaseModel<Artista>
{
}
public class Artista : IEntity
{
}