我找不到从Expression <Func <T1,bool >>转换为Expression <Func <T2,bool >>的方法.因为我使用了大量的反射,实际上,我真正需要的是一种采用类型参数并执行转换的方法.
public object Convert(Expression<Func<T1,bool>> expr, Type t);
Run Code Online (Sandbox Code Playgroud)
T2来自T1
public class T1 {
int FamilyId {get; set;}
}
public class T2 : T1 {
... other properties
}
Run Code Online (Sandbox Code Playgroud)
我在基类上定义了一个过滤器表达式
Expression<Func<T1,bool>> filter = p => p.FamilyId == [some value]
Run Code Online (Sandbox Code Playgroud)
我想申请List <T2>
我的模型中有一个名为Customers的表,其中包含字段IsActive.每当我对客户运行查询时,只应检索活动客户.我可以在每个查询中包含过滤器,但这看起来不太好.我希望能够在Object Context杠杆上覆盖Customers属性,但我不确定这是否可行.任何帮助将非常感谢!谢谢
我在控制器级别应用了一个路由属性,但是我希望将一个动作排除在路由之外.没有覆盖,但完全排除了路线.怎么能实现这一目标?
比方说我有:
[RoutePrefix("promotions")]
[Route("{action=index}")]
public class ReviewsController : Controller
{
// eg.: /promotions
public ActionResult Index() { ... }
// eg.: /promotions/archive
public ActionResult Archive() { ... }
// eg.: /promotions/new
public ActionResult New() { ... }
// eg.: /promotions/edit/5
[Route("edit/{promoId:int}")]
public ActionResult Edit(int promoId) { ... }
public void Internal() { ... }
}
Run Code Online (Sandbox Code Playgroud)
我希望内部不要被路由.
我原本期望找到[DoNotRoute]或[Ignore]属性,但我没有找到类似的东西.
我有以下类和接口
public interface IFoo {}
public class Foo : IFoo {}
public interface IWrapper<T> where T : IFoo {}
public class Wrapper<Foo> : IWrapper<Foo> {}
Run Code Online (Sandbox Code Playgroud)
我怎样才能投Wrapper<Foo>来IWrapper<IFoo>?使用Cast(InvalidCastException)时引发异常,因为使用as时为null。
谢谢您的帮助!
更新
这是一个更具体的示例:
public interface IUser {}
public class User : IUser {}
public interface IUserRepository<T> where T : IUser {}
public class UserRepository : IUserRepository<User> {}
Run Code Online (Sandbox Code Playgroud)
现在,我需要能够执行以下操作:
UserRepository up = new UserRepository();
IUserRepository<IUser> iup = up as IUserRepository<IUser>;
Run Code Online (Sandbox Code Playgroud)
我正在使用.net 4.5。希望这可以帮助。