2011-06-24 131 views
0
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;} 
} 

所以,如果eeeePhoto型的,那么的pppp“类型”应该是Permission<Photo>传递类型参数动态地泛型类型

有什么样eeee.GetType()

+0

为什么不能只改变'public Permission pppp {get;组; }'到'public权限 pppp {get;组; ''? –

回答

1

看起来像你可以很容易地将您的Access类更改为

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

通用背后的思想s是通用类型在运行时已知的;因此,你的代码不会编译。我建议你使用反射来完成你的任务。