異なるアセンブリ内の 2 つの部分クラスが同じクラスを表すことは可能ですか? 質問する

異なるアセンブリ内の 2 つの部分クラスが同じクラスを表すことは可能ですか? 質問する

「MyProject.Data」というプロジェクトに「Article」というクラスがあり、これが Web アプリケーションのデータ レイヤーとして機能します。

「MyProject.Admin」という別のプロジェクトがあります。これは、データの表示/編集用の Web ベースの管理システムであり、ASP.NET Dynamic Data を使用して構築されています。

基本的に、部分クラスを使用して Article クラスを拡張し、そのプロパティの 1 つを "UIHint" エクステンダーで拡張して、通常の複数行テキスト ボックスを FCKEdit コントロールに置き換えることができるようにします。

私の部分クラスとエクステンダーは次のようになります。

[MetadataType(typeof(ProjectMetaData))]
public partial class Project
{
}

public class ProjectMetaData
{
    [UIHint("FCKeditor")]
    public object ItemDetails { get; set; }
}

部分クラスが元の部分クラスと同じプロジェクト (つまり、MyProject.Data プロジェクト) にある場合、これはすべて正常に機能します。

しかし、UI の動作はデータ レイヤーではなく、管理レイヤーに配置する必要があります。そのため、このクラスを MyProject.Admin に移動します。

ただし、そうすると機能が失われます。

私の基本的な質問は、別々のプロジェクトに 2 つの部分クラスがあり、両方とも同じ「クラス」を参照することはできるかどうかです。

そうでない場合、データ層ロジックと UI ロジックを混在させずに、私がやろうとしていることを実現する方法はありますか?

ベストアンサー1

いいえ、2 つの異なるアセンブリ (プロジェクト) で同じクラスを参照する 2 つの部分クラスを持つことはできません。アセンブリがコンパイルされると、メタデータが組み込まれ、クラスは部分クラスではなくなります。部分クラスを使用すると、同じクラスの定義を 2 つのファイルに分割できます。

おすすめ記事