将type参数动态传递给泛型类型

时间:2011-06-24 11:49:17

标签: c# generics oop

public class Access
{
    public Entity eeee { get; set; }
    public Permission<eeee.GetType()> pppp { get; set; }
}

public class Entity
{

}

public class Permission<T>
{
    public bool CanView {get;set;}
    public bool CanEdit {get;set;}
    public bool CanDelete {get;set;}

}

public class Photo:Entity
{
}

public class PhotoPermission:Permission<Photo>
{
    public bool CanTag {get;set;}
}

public class Video:Entity
{

}

public class VideoPermission:Permission<Video>
{
    public bool CanFastForward {get;set;}
}

因此,如果eeee的类型为Photo,则pppp的“类型”应为Permission<Photo>

是否有类似eeee.GetType()

的内容

2 个答案:

答案 0 :(得分:1)

您似乎可以非常轻松地将Access课程更改为

public class Access<T>
{
    public T eeee { get; set; }
    public Permission<T> pppp { get; set; }
}

答案 1 :(得分:0)

泛型背后的想法是泛型类型在运行时是已知的;因此,您的代码将无法编译。我建议你用Reflection来完成你的任务。