I am trying to refactor a solution to bring on board another project.
I have a Core project where common classes across projects reside.
I’ve tried to simpify my question by using 2 imaginary projects: Holidays and Weather…
I have a file load process setup for the Holidays project which has the following 2 classes:
public class Job
{
public virtual string CreatedBy { get; set; }
public virtual DateTime? CreatedDate { get; set; }
public virtual Security Security { get; set; }
protected IList<File> _files = new List<File>();
public virtual IEnumerable<File> Files
{
get { return _files; }
}
}
public class File
{
public virtual string FileName { get; set; }
public virtual FileType FileType { get; set; }
public virtual FileStatusType FileStatusType { get; set; }
public virtual Job Job { get; set; }
}
The file load process for the Weather project has exactly the same structure as Holidays, except that the Jobs class does not have a Security property.
My question is, is it possible to somehow move both classes into the Core project to allow both projects to use them?
Obviously Weather does not need the Security property, so I was thinking I would have a Core.Job class without Security, and then extend the Core.Job in Holidays.Job.
But once I do that, in the Core.File class, what Job is it referring to? As it sits in the Core project it must be the Core.Job.
So would I then need to have Job and File sit in Holidays, and Weather (and any other future projects) use the Core.Job and Core.File?
I don’t want the Core project to have any references to sub projects.
I am using NHibernate, and so have mapping files – adding to the complexity.
Hope this is clear enough
Thanks
Not very clear why confuse on the soluton offered by you (assuming that I right understood you)
in the Hollidays you have
in Weather simply use a type
Job, if it selfsufficient.In this case you refer
CoreDLLfromHollidayproject andWeather. When you serialize it viaNHibernateit forHollidayJobsave one field more, but whenWeatherreads the same table it skips that field, as don’t know anything, and don’t actually care abotu it.Hope this helps.