StrataFrame Forum
Back
Login
Login
Home
»
StrataFrame Application Framework - V1
»
Business Objects and Data Access (How do I?)
»
Subcalssing SF Business Objects
Subcalssing SF Business Objects
Post Reply
Like
0
Prev
1
2
Jump To Page
Subcalssing SF Business Objects
View
Flat Ascending
Flat Descending
Threaded
Options
Subscribe to topic
Print This Topic
RSS Feed
Goto Topics Forum
Author
Message
Greg McGuffey
Greg McGuffey
posted 13 Years Ago
ANSWER
Post Details
Share Post
Group: Forum Members
Posts: 2K,
Visits: 6.6K
To sub-class a BO, you are actually sub-classing the BusinessLayer as you have done. Then, you change the inherits in the BO to point to your sub-classing of the BusinessLayer.
//-- sample customized BusinessLayer
public class HelloWorldLayer : MicroFour.StrataFrame.Business.BusinessLayer
{
public string GetGreeting() { return "Hello World!"; }
}
//-- Change BO to inherit from this business layer.
public class HelloWorldBO : HelloWorldLayer
{
//....
}
When doing the sub-class of BusinessLayer, you might need to explicitly implement the constructors, just calling the base constructors.
Reply
Like
0
Ger Cannoll
Ger Cannoll
posted 13 Years Ago
ANSWER
Post Details
Share Post
Group: StrataFrame Users
Posts: 430,
Visits: 507
I have put in constructor code when subclassing the SF buisnes object but am getting errors on Icontainer line and InitializeComponent. I basically took these snippets of code from the BuisnessObjects created ut of the Busimess Object Mapper. Not sure if I need the InitializeComponent line ??
My full Subclassing Code is:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using MicroFour.StrataFrame.UI;
using MicroFour.StrataFrame.Business;
using MicroFour.StrataFrame.UI.Windows.Forms.DevEx;
using DevExpress.XtraEditors;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Runtime.Serialization;
using System.Diagnostics;
namespace KernelBaseSF
{
// 16-05-11 Subclass Business Object
public class KernelBO : MicroFour.StrataFrame.Business.BusinessLayer
{
public KernelBO()
: base()
{ InitializeComponent(); }
public KernelBO(Icontainer container)
: base()
{
container.Add(this);
InitializeComponent();
}
public KernelBO(SerializationInfo info, StreamingContext context)
:base(info,context)
{
InitializeComponent();
}
}
Reply
Like
0
Greg McGuffey
Greg McGuffey
posted 13 Years Ago
ANSWER
Post Details
Share Post
Group: Forum Members
Posts: 2K,
Visits: 6.6K
You do not need the initialize component. That is specific to the actual BOs. For an extended BusinessLayer, you'd use
something like this:
public class KernelBO : MicroFour.StrataFrame.Business.BusinessLayer
{
public KernelBO() : base() {}
public KernelBO(Icontainer container) : base( container ) {}
public KernelBO(SerializationInfo info, StreamingContext context) :base( info, context ) {}
}
You would then add any specific code as needed. For instance I did a BusinessLayer to support auditing and added event handlers to add/edit/delete events of base.
Reply
Like
0
Ger Cannoll
Ger Cannoll
posted 13 Years Ago
ANSWER
Post Details
Share Post
Group: StrataFrame Users
Posts: 430,
Visits: 507
Hi Greg. ve stripped out all the InitailizeComponent etc stuff and have it down to what you have suggested, but its coming up with a problem on Icontainer....type or namespace Icontainer could not be found. I've included all the namespaces I think are required, including System.ComponentModel
Reply
Like
0
Greg McGuffey
Greg McGuffey
posted 13 Years Ago
ANSWER
Post Details
Share Post
Group: Forum Members
Posts: 2K,
Visits: 6.6K
Hmmm....It's in System.ComponentModel, so not sure what your problem is. Could you post a sample of the stripped down app?
Reply
Like
0
Ger Cannoll
Ger Cannoll
posted 13 Years Ago
ANSWER
Post Details
Share Post
Group: StrataFrame Users
Posts: 430,
Visits: 507
Hi Greg.
I removed the line and typeed it in again......and now it compiles ok without an error .
Now I want to add in functionality (into my Bae Class) to run code in the SetDefaultValues method of the Business Object. How do I code this in in my Base Class.
Reply
Like
0
Greg McGuffey
Greg McGuffey
posted 13 Years Ago
ANSWER
Post Details
Share Post
Group: Forum Members
Posts: 2K,
Visits: 6.6K
I removed the line and typed it in again......and now it compiles ok without an error
Don't ya love it when that happens. I can't tell you how many hours I've wasted on things like this.....
As to having custom code for SetDefaultValues, you would override the OnSetDefaultValues method. You'll want to call the base method to ensure that the event gets raised for others to consume.
//-- In your base class....
protected override void OnSetDefaultValues()
{
//-- Call base method to actually raise event for other consumers.
base.OnSetDefaultValues();
//-- Add you customization code.
}
Depending on your needs, you can call the base class first (as shown) which will raise the event, then execute your custom code (i.e. you want any other work to be done
before
you do yours) OR you can call it afterwards, meaning you want to have your custom work done before the event is raised and thus available to any consumers of the event.
Edited
13 Years Ago by
Greg McGuffey
Reply
Like
0
GO
Merge Selected
Merge into selected topic...
Merge into merge target...
Merge into a specific topic ID...
Open Merge
Post Reply
Like
0
Prev
1
2
Jump To Page
Similar Topics
Post Quoted Reply
Reading This Topic
Login
Login
Remember Me
Reset Password
Resend Validation Email
Login
Explore
Messages
Mentions
Search