Eu tenho uma classe chamada 'Artigo' em um projeto chamado 'MyProject.Data', que atua como a camada de dados do meu aplicativo Web.
Eu tenho um projeto separado chamado 'MyProject.Admin', que é um sistema de administração baseado na Web para exibir / editar os dados, e foi construído usando o ASP.NET Dynamic Data.
Basicamente, quero estender a classe Article, usando uma classe parcial, para poder aumentar uma de suas propriedades com um extensor "UIHint", o que me permitirá substituir a caixa de texto multilinhas normal por um controle FCKEdit.
Minha classe parcial e extensor ficariam assim:
[MetadataType(typeof(ProjectMetaData))]
public partial class Project
{
}
public class ProjectMetaData
{
[UIHint("FCKeditor")]
public object ItemDetails { get; set; }
}
Agora, tudo isso funciona bem se a classe parcial estiver no mesmo projeto que a classe parcial original - ou seja, o projeto MyProject.Data.
Mas o comportamento da interface do usuário não deve ficar na camada Dados, mas na camada Admin. Então, eu quero mover essa classe para MyProject.Admin.
No entanto, se eu fizer isso, a funcionalidade será perdida.
Minha pergunta fundamental é: posso ter 2 classes parciais em projetos separados, mas ambas se referindo à mesma "classe"?
Caso contrário, existe uma maneira de realizar o que estou tentando fazer, sem misturar a lógica da camada de dados com a lógica da interface do usuário?
MetadataType
torna os modelos mais parecidos com o ViewModels.