2009-08-26 9 views
0

LINQ-> SQLクラスをDLLにコンパイルして開発者に提供したい場合は、さまざまなエンティティの部分メソッドにフックできるようにするにはどうすればよいですか(例えば、OnValidate)?コンパイルされたアセンブリに対して部分的なメソッドを実装することはできませんが、この現象(おそらくイベントを含む)をどのように抽出できるかについてのご意見をいただければ幸いです。コンパイル済みのLINQ-> SQLクラスの部分メソッドの作成

答えて

1

は、あなたのニーズに合わせて、このソリューションをカスタマイズする必要があるかもしれませんが、部分メソッドからイベントを公開する簡単な方法は、そのように行うことができますActionは多数をサポートします。

1

私が知っている限り、あなたはできません。

コンパイラによって部分クラスが検出された場合、それらを結合して完全なクラスを形成します。私があなたのニーズが満たされているのを見る唯一の方法は、あなたのクラスを継承できるようにすることですが、L2Sでは、これは価値があるよりも難しいことが分かります。

EDIT:イベント用として

、あなたのL2Sクラス数の大きさに応じて、それはすべてあなたに入れて喜んでいるかに依存します。このソリューションは、仕事ができるが、取得するには長い時間がかかります右。 Interfacesとイベントとカスタムハンドラを組み合わせると、そこにアクセスできます。多数のクラスにアクセスしたい場合は、時間の投資に備えてください。

MSDN - Partial Classes

0

私はあなたが望む任意の時点で公開イベントを公開することによってこれを処理します。 、あなたがまたは別のパラメータに沿って通過する必要がない場合もあり

partial class LinqClass 
{ 
    public event Action<LinqClass, ChangeAction> OnValidating; 

    partial void OnValidate(ChangeAction action) 
    { 
     if (OnValidating != null) 
     { 
      OnValidating(this, action); 
     } 
    } 
} 

0

私は開発者に

を提供するために、DLLに私LINQ-> SQLクラスをコンパイルしたい場合は、私はこれは良いアイデアだと思いいけません。 LinqToSqlモデルが変更したいかもしれない多くの理由があります。あなたのドメインに新しい洞察を発見しながらモデルを修正する必要があるでしょう。

"開発者に提供する"という別個のDLLを作成することで、開発の効率を阻害する可能性のある人工境界を作成します。あなたが達成しようとする可能性のあるものに対して、ソース管理システムを取得する方が適切かもしれません。

+0

はい、ほとんどの場合私は完全にあなたと同期しています。私の体系では、データベースモデルを素早くモデル化するために使用する内部ツールに基づいてlinq-> sqlクラスを生成しています。これにより、必要なときにいつでも再生成でき、linq-> sqlクラスとデータベースは常に同期します。 – Mustafakidd