I have a class library with all my database logic. My DAL/BLL.
I have a few web projects which will use the same database and classes, so I thought it was a good idea to abstract the data layer into its own project.
However, when it comes to adding functionality to classes for certain projects I want to add methods to certain classes.
For example, my data layer has Product and SomeItem objects:
// Data Access Layer project
namespace DAL {
public class Product {
//implementation here
}
public class SomeItem {
//implementation here
}
}
In one project I want to add an interface that is used by different content items, so I have a class called:
// This is in Web Project
namespace DAL {
public partial class Product : ICustomBehaviour {
#region ICustomBehaviour Implementation
TheSharedMethod();
#endregion
}
}
Is it a good idea to write a partial class in a separate project (creating a dependency) using the same namespace? If it's a bad idea, how can I get this type of functionality to work?
It doesn't seem to want to merge them at compile time, so I'm not sure what I'm doing wrong.
You can't write a partial class across projects. A partial class is a compile-time-only piece of syntactic sugar - the whole type ends up in a single assembly, i.e. one project.
(Your original DAL file would have to declare the class to be partial as well, by the way.)
I see no reason why this scheme would not work:
Two files contain storage mechanisms (or some other feature). They specify inheritance but contain no business logic:
One file contains the business logic:
Now create two projects:
Both projects make use of the same business logic.