난 당신의 형식 매개 변수를 제안 할 것이다는
interface IMyExpectation {
int GetEntityId();
}
를 포함하고 그 인터페이스로 메소드의 형식 매개 변수를 제한 IMyExpectation
같은 사용자 지정 인터페이스로 제한 될 수있다. 당신이 그것을 필요로하는 인터페이스를 구현하는 엔티티 프레임 워크 클래스에 다음
public static Expression<Func<T, bool>> IsOk<T>(long? entityId)
where T: IMyExpectation // << restrict the type to what is needed
{
return new Func<T, bool>(
x => !entityId.HasValue || entityId.Value == x.GetEntityId()
);
}
을 (지금이. 멀리 GetEntityId
방법은 간다 컴파일)하지만 모델 때문에 별도의 파일에있는 클래스의 partial
부분에 모델이 다시 생성 될 때마다 사용자 지정 코드가 지워지지는 않습니다. 예 :
참고하여 EF 모델 개체에
:이 Aliostad's answer의 적용을받습니다.
public partial class Customer : IMyExpectation { //...
public partial class Invoice : IMyExpectation { //....
// etc
또는
참고하여 포항 강판에이 지금 EF 클래스
public class CustomerPoco: IMyExpectation { //...
public class InvoicePoco : IMyExpectation { //...
당신의 실체와 클래스 (당신이 'IMyExpectation'를 구현 무엇에 의해 방해하는 경우 잘 작동합니다 on)은 모두 원래의 방법이 원하는대로 표현하고 있습니다.
마지막으로 메서드는 인터페이스를 구현 한 이러한 것들을 모두 이해하므로 type 매개 변수를 통해 메서드에 전달할 후보가됩니다.
당신이이 대답에 대한 올바른 시나리오라면, 그 것들을 잘 포장해야합니다.
답변이 없지만 언제부터 'IsOK'가 메소드 이름으로 잘라 버렸습니다! –
@ 밀 Whe : 그것은 단지 예일뿐입니다. – Naor
@Naor; 당신은 일을 너무 복잡하게 만들려는 가능성을 고려 했습니까? 그냥 생각 .... –