J'ai une classe appelée «Article» dans un projet appelé «MyProject.Data», qui sert de couche de données pour mon application Web.
J'ai un projet séparé appelé «MyProject.Admin», qui est un système d'administration basé sur le Web pour afficher / modifier les données, et a été construit à l'aide de ASP.NET Dynamic Data.
Fondamentalement, je veux étendre la classe Article, en utilisant une classe partielle, afin que je puisse augmenter l'une de ses propriétés avec un prolongateur "UIHint", qui me permettra de remplacer la zone de texte multiligne normale par un contrôle FCKEdit.
Ma classe partielle et mon extension ressembleraient à ceci:
[MetadataType(typeof(ProjectMetaData))]
public partial class Project
{
}
public class ProjectMetaData
{
[UIHint("FCKeditor")]
public object ItemDetails { get; set; }
}
Maintenant, tout fonctionne correctement si la classe partielle est dans le même projet que la classe partielle d'origine - c'est-à-dire le projet MyProject.Data.
Mais le comportement de l'interface utilisateur ne doit pas se trouver dans la couche de données, mais plutôt dans la couche d'administration. Je souhaite donc déplacer cette classe vers MyProject.Admin.
Cependant, si je fais cela, la fonctionnalité est perdue.
Ma question fondamentale est: puis-je avoir 2 classes partielles dans des projets séparés, mais les deux faisant référence à la même «classe»?
Sinon, existe-t-il un moyen d'accomplir ce que j'essaie de faire, sans mélanger la logique de la couche de données avec la logique de l'interface utilisateur?
MetadataType
rend les modèles plus similaires aux ViewModels.