Web Client Software Factory provides with a good feature through [ServiceDependency] attribute. This attribute allows us to make use of the Dependency Injection and Instance Reuse advantages. Example Let us have an example to learn the [ServiceDependency] attribute. Step 1: Create a new WCSF project You can open the Visual Studio 2010, and use File>New Project and enter the project name as shown in the image below: In the appearing wizard after screen above click Finish. Step 2: Create a Utility class in Shell module You can view from the solution explorer that there is a Shell module. Right click on it and add new class named Utility which is having a single method named Greetings(); After the actions the solution explorer looks like above image. The content of Utility class will be: using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace ServiceDependencyTest.Shell { public class Utility { public Utility() { }
public string Greetings() { return "Hello There!"; } } } Step 3: Specify the class Utility in global services The Web Client Software Factory framework uses the term services for instances of classes that implement a particular interface. The services would be accessible through a service locator. For specifying our class instance as a service we have to modify the ShellModuleInitializer.cs Note: There are global and module services. The services specified as global would be accessible to all modules in the application and the services specified as module is visible only to the module in which it is declared. In our case we are going to declare the Utility class in the global services. For this add the line globalServices.AddNew<Utility, Utility>(); in the method AddGlobalServices(IServiceCollection globalServices) Step 4: Declare the property with [ServiceDependency] Now we proceed with declaring a new property named Utility in the DefaultViewPresenter class. [ServiceDependency] public Utility Utility { get; set; } Please note that we marked the property with [ServiceDependency] - this will automatically take care of the instance injection. The other way of instance creation is using the [CreateNew] attribute. Step 5: Testing the application Back to the web application we can place a label and button on the form. On click of the button use the following code. protected void Button1_Click1(object sender, EventArgs e) { Label1.Text = this._presenter.Utility.Greetings(); } Now you can run the application and clicking the button you will be able to see the greetings text. Note: The Model View Presenter (MVP) constraints are violated in the above example by placing button handler code inside the view inorder to make the example more simple. Instance Reuse The WCSF provides the flexibility of instance reuse in the above scenario. You can verify it by placing a breakpoint in the constructor of Utility class and pressing button multiple times. There will be only one hit of the breakpoint. For getting the complete feel through running application, just replace the content of Utility class with the following. public class Utility { public Utility() { _InstanceCount++; }
private static int _InstanceCount;
public string Greetings() { string msg = string.Format("(From instance: {0})", _InstanceCount);
return "Hello There!" + msg; } } Using Code The WCSF 2010 framework is needed to run the application. For installing WCSF please refer to this Article.
You need to be a premium member to use this feature. To access it, you'll have to upgrade your membership.
Become a sharper developer and jumpstart your career.
$0
$
. 00
monthly
For Basic members:
$20
For Premium members:
$45
For Elite members: