2012-07-08 2 views
5

나는 이것을 할 수있는 영리한 방법이 있기를 바라고 있습니다. 몇 가지 메소드가있는 일반 기본 서비스가 있습니다 ... 그래서 현재 Create (T obj)와 같은 기본 클래스에 몇 가지 메소드가 있습니다. 내가 컴파일 할Generics로 의미있는 매개 변수 이름 만들기

public class ProductService : BaseService<Product> 

: 내가 원하는 것은 컴파일러는보다 직관적 인 매개 변수 (일부 규칙의 기반으로) 이름 있도록 기본 서비스의 구체적인 예는 다음과 같이 생성 생성을위한 (예를 들어)이에 ProductService 방법 :

public Product Create(Product product) 

대신

public Product Create(Product obj) 

나는 그것이 작은 소리지만 인턴 전날 나에게 물었다 나는 그에게 그 확실히 100 %를 말할 수 없습니다 알고 그것은 불가능합니다.

+2

당신이 무엇을 요구 달성하기 위해 어떤 방법을 모르겠지만, 심지어 'obj'에 append 된'entity'를 사용하면 코드를 읽는 것이 더 나을 것입니다. 특히 클래스가'IEntity' 인터페이스 나 기본'Entity' 클래스로부터 상속받은 경우. – Paul

+0

실제로 ... 동의 함 ... – Rikon

답변

3

내가 아는 한, 자동으로이를 달성 할 방법이 없습니다. 당신이 정말로 어쨌든 그것을하고 싶어한다면, 당신은 BaseService의 방법 virtual을하고, 각 하위 클래스에서 재정의 수 :

public override Product Create(Product product) { 
    return base.Create(product); 
} 
+2

포스터에서 요구 한 것을 달성하는 데 가장 좋은 방법 일 것이라는 것에는 동의하지만 아주 작은 이익을 위해 많은 노력을 기울이는 것처럼 들립니다. 실제로 그것을하는 것은 권하지 않지만 작동 할 것입니다. –

+0

@JonathanRupp : +1; 왜냐하면'Product obj' 또는'Product entity'가 여전히 의미 론적으로 의미가 있기 때문이다. –

+0

예 ... 때로는 놓칠 수있는 작은 자막이 있습니다 ... 같은 것을 기대하고 있습니다 ... public void Insert (T @ T.GetType() .Name.ToLower()) 또한, 그 정신과 함께, 나는 T를 반영하는 시간을 컴파일 할 수 있었다. .. 그러나 제로 우물. .. 내가 추측하는 clr 팀 승 / – Rikon

관련 문제