Grazie per le risposte soddisfacenti ma che mi richiamano altri quesiti legati alla oop...

in effetti il mio obiettivo è poter caricare la classe Prodotto incluse le subclassi interne come Categoria dei valori opportuni e poi usare un metodo di una eventuale classe Database per inserire i valori nel db passando semplicemente l'oggetto (Prodotto) creato.
per esempio:


// Creo oggetto
Prodotto pr = new Prodotto();
pr.Nome = "nome prodotto";
pr.Descrizione = "descrizione prodotto";
pr.Categoria.ID = "id categoria";
pr.Categoria.Descrizione = "descrizione categoria";

// Creo oggetto Database
Database db = new Database();
db.InserisciProdotto(pr);

Mi chiedevo se come principio nel rispetto della programmazione OOP è corretto.

Grazie ancora di tutto!