2012-07-08 7 views
5

私はこれを行うには巧妙な方法があると思っています。私はいくつかのメソッドを持っているジェネリックベースサービスを持っています...だから現在、Create(T obj)のようなこの基本クラスにいくつかのメソッドがあります。私はそれをコンパイルしたいGenericで意味のあるパラメータ名を作成する

public class ProductService : BaseService<Product> 

:何がしたいことは、コンパイラは、より直感的なパラメータ(一部のルールのオフに基づいて)名前ことができるように、基本サービスの具体的な例は次のように作成されます作成するためのものです

public Product Create(Product product) 

代わりの

public Product Create(Product obj) 

私はそれがマイナーな音を知っているが、インターンは、先日私に尋ねた、私はその100%は確かに彼を言うことができませんでした。この(例えば)にProductService方法そうだったできません。

+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;とりわけ、「製品obj」または「製品実体」がまだ意味的に意味をなすため、合意した。 –

+0

ええ、時には私が見逃しているこれらの小さな字幕があります...私は何かを期待していました public void Insert(T @ T.GetType().Name.ToLower()) また、その考え方で、私はTを反映する時間をコンパイルすることができます...しかし、ああ...私が推測するCLRチームと一緒に持っているといいですか? – Rikon

関連する問題