Solved

Need a real exemlpe in using Microsoft.ApplicaitonBlock.ConfigurationManager

Posted on 2004-08-05
20
390 Views
Last Modified: 2012-06-27
The help file is not very clear.

I would like to read write to a XML Config File.
Encrypted if it is easy to achieve.

But I really want to use the application block because it will be more complicated in the future.
For now, I just try to understand with a small config.

If you need more info let me know.
0
Comment
  • 10
  • 7
  • 2
  • +1
20 Comments
 
LVL 70

Expert Comment

by:Éric Moreau
ID: 11728067
0
 

Author Comment

by:Yann de Champlain, PMP
ID: 11728116
Thank you but this is not was I am looking for.
Need a real exemlpe in using Microsoft.ApplicationBlock.ConfigurationManagement.
0
 
LVL 70

Expert Comment

by:Éric Moreau
ID: 11728331
I am not sure that this AB gives all the features you request. That's why I gave you this other link.
0
Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 

Author Comment

by:Yann de Champlain, PMP
ID: 11728342
ok. Thank anyway.
0
 
LVL 8

Expert Comment

by:vinhnl
ID: 11728742
0
 

Author Comment

by:Yann de Champlain, PMP
ID: 11729121
Thank but this is not what I am looking for.
This page list the ApplicationBlock's pachage content.  So I already have that.
0
 
LVL 37

Expert Comment

by:gregoryyoung
ID: 11729260
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/cmab.asp

includes some information on use ....


yes the configuration management block does all of this ...



btw:

look where you installed it ...
"The download also contains the following QuickStart projects:

Microsoft.ApplicationBlocks.ConfigurationManagement.Quickstarts.Read
This QuickStart shows how to read data from a variety of data stores using the Configuration Management Application Block.

Microsoft.ApplicationBlocks.ConfigurationManagement.Quickstarts.Write
This QuickStart shows how to write data to a variety of data stores using the Configuration Management Application Block.

Microsoft.ApplicationBlocks.ConfigurationManagement.Quickstarts.Hashtable
This QuickStart demonstrates the special support built into the Configuration Management Application Block for application configuration data stored in Hashtable objects. "
0
 

Author Comment

by:Yann de Champlain, PMP
ID: 11729448
Thank but again, I am lost with the exemple from the application block.
The code required to retreive a field is bigger than the whole application. That is why I am looking for a real implementation.

If I can't find, I'll delete this Class Libray from our namespace and create a regular one to read write config to a simple xml file.
0
 
LVL 37

Expert Comment

by:gregoryyoung
ID: 11729525
// ===============================================================================
// Microsoft Configuration Management Application Block for .NET
// http://msdn.microsoft.com/library/en-us/dnbda/html/cmab.asp
//
// Form1.cs
//
// The form for the Read Quickstart
//
// For more information see the Configuration Management Application Block Implementation Overview.
//
// ===============================================================================
// Copyright (C) 2000-2001 Microsoft Corporation
// All rights reserved.
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY
// OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT
// LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR
// FITNESS FOR A PARTICULAR PURPOSE.
// ==============================================================================

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Configuration;
using System.Reflection;
using Microsoft.Win32;

using Microsoft.ApplicationBlocks.ConfigurationManagement;
 
namespace Microsoft.ApplicationBlocks.ConfigurationManagement.Quickstarts.Read
{
      /// <summary>
      /// Summary description for Form1.
      /// </summary>
      public class Form1 : System.Windows.Forms.Form
      {
            private System.Windows.Forms.TextBox colorText;
            private System.Windows.Forms.TextBox sizeText;
            private System.Windows.Forms.Label label1;
            private System.Windows.Forms.Label label2;
            private System.Windows.Forms.Button button2;
            private System.Windows.Forms.Label label3;
            private System.Windows.Forms.TextBox someText;
            private System.Windows.Forms.ComboBox configSection;
            /// <summary>
            /// Required designer variable.
            /// </summary>
            private System.ComponentModel.Container components = null;
            internal System.Windows.Forms.CheckBox readOnlySection;
            private const string COLON = ":";

            public Form1()
            {
                  //
                  // Required for Windows Form Designer support
                  //
                  InitializeComponent();

                  // Initialize the registry values for the Quickstarts
                  try
                  {
                        using( RegistryKey regKey = Registry.LocalMachine.OpenSubKey( @"Software\Microsoft", true ) )
                        {
                              RegistryKey configMgmt = regKey.OpenSubKey( "ConfigurationManagement", true );
                              if( configMgmt == null )
                              {
                                    configMgmt = regKey.CreateSubKey( "ConfigurationManagement" );
                                    configMgmt.SetValue( "symmetricKey", "VToaqZjp8C27V90oSmT/CF+afvRGClc9" );
                                    configMgmt.SetValue( "initializationVector", "ou95G2/WziI=" );
                                    configMgmt.SetValue( "hashKey", "MyXuEd6f+go=" );
                                    configMgmt.SetValue( "connectionString", "server=localhost;database=cmab;Integrated Security=SSPI" );
                              }

                              using( configMgmt )
                              {
                                    RegistryKey encryptedRegistry = configMgmt.OpenSubKey( "EncryptedRegistry", true );
                                    if( encryptedRegistry == null )
                                    {
                                          encryptedRegistry = configMgmt.CreateSubKey( "EncryptedRegistry" );
                                          using( encryptedRegistry )
                                          {
                                                encryptedRegistry.SetValue( "value", "fLivcJGbFoqW+di0aSZk1vr+KxfpKDwhxOEzjk+nTOe4ztloqqE9CT9G8HDjxhblUiQfRNuxYGhuBhb1u5zceipZ8FMAkfgbT3d8m7r0Iovq+34cp4zdUo7CwIbgSB/Ucm+PYC4Y9uYRVxswSCvPI4+c2zVkn/erQO6zObpLSwaUfemiRawf1/Q42QqNhi5PCX8QPy7dIUZqjimaXw/vqgV6SdXqN53/Qt+rrcRQvrrzyZd31e4myKqB+eAxyteEK9+rVLMb+DcWztg91V9xiY+d+vA7zrybyK9us4Mut7U=" );
                                                encryptedRegistry.SetValue( "signature", "" );
                                          }
                                    }
                                    else
                                    {
                                          encryptedRegistry.Close();
                                    }
                              
                                    RegistryKey unencryptedRegistry = configMgmt.OpenSubKey( "UnencryptedRegistry", true );
                                    if( unencryptedRegistry == null )
                                    {
                                          unencryptedRegistry = configMgmt.CreateSubKey( "UnencryptedRegistry" );
                                          using( unencryptedRegistry )
                                          {
                                                unencryptedRegistry.SetValue( "value", "<CustomConfigurationData xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><Color>Goldenron</Color><SomeText>FOO FOO FOO!</SomeText><Size>42</Size></CustomConfigurationData>" );
                                                unencryptedRegistry.SetValue( "signature", "" );
                                          }
                                    }
                                    else
                                    {
                                          unencryptedRegistry.Close();
                                    }
                              }
                        }
                  }
                  catch( Exception e )
                  {
                        throw new Exception( "Error creating registry keys for the Quickstart samples: " + e.Message, e );
                  }

                  try
                  {
                        ConfigurationManager.Initialize();
                  }
                  catch( Exception ex )
                  {
                        string message = "";
                        for( Exception tempException = ex; tempException != null; tempException = tempException.InnerException )
                        {
                              message += tempException.Message + Environment.NewLine + "----------" + Environment.NewLine;
                        }
                        MessageBox.Show( message );
                  }
            }


            /// <summary>
            /// Clean up any resources being used.
            /// </summary>
            protected override void Dispose( bool disposing )
            {
                  if( disposing )
                  {
                        if (components != null)
                        {
                              components.Dispose();
                        }
                  }
                  base.Dispose( disposing );
            }


            #region Windows Form Designer generated code
            /// <summary>
            /// Required method for Designer support - do not modify
            /// the contents of this method with the code editor.
            /// </summary>
            private void InitializeComponent()
            {
                  this.colorText = new System.Windows.Forms.TextBox();
                  this.sizeText = new System.Windows.Forms.TextBox();
                  this.label1 = new System.Windows.Forms.Label();
                  this.label2 = new System.Windows.Forms.Label();
                  this.button2 = new System.Windows.Forms.Button();
                  this.label3 = new System.Windows.Forms.Label();
                  this.someText = new System.Windows.Forms.TextBox();
                  this.configSection = new System.Windows.Forms.ComboBox();
                  this.readOnlySection = new System.Windows.Forms.CheckBox();
                  this.SuspendLayout();
                  //
                  // colorText
                  //
                  this.colorText.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
                        | System.Windows.Forms.AnchorStyles.Left)
                        | System.Windows.Forms.AnchorStyles.Right)));
                  this.colorText.Location = new System.Drawing.Point(72, 16);
                  this.colorText.Name = "colorText";
                  this.colorText.Size = new System.Drawing.Size(520, 20);
                  this.colorText.TabIndex = 1;
                  this.colorText.Text = "";
                  //
                  // sizeText
                  //
                  this.sizeText.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
                        | System.Windows.Forms.AnchorStyles.Left)
                        | System.Windows.Forms.AnchorStyles.Right)));
                  this.sizeText.Location = new System.Drawing.Point(72, 48);
                  this.sizeText.Name = "sizeText";
                  this.sizeText.Size = new System.Drawing.Size(520, 20);
                  this.sizeText.TabIndex = 3;
                  this.sizeText.Text = "";
                  //
                  // label1
                  //
                  this.label1.Location = new System.Drawing.Point(8, 16);
                  this.label1.Name = "label1";
                  this.label1.Size = new System.Drawing.Size(168, 23);
                  this.label1.TabIndex = 4;
                  this.label1.Text = "Color";
                  //
                  // label2
                  //
                  this.label2.Location = new System.Drawing.Point(8, 48);
                  this.label2.Name = "label2";
                  this.label2.Size = new System.Drawing.Size(168, 23);
                  this.label2.TabIndex = 5;
                  this.label2.Text = "Size";
                  //
                  // button2
                  //
                  this.button2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
                        | System.Windows.Forms.AnchorStyles.Left)
                        | System.Windows.Forms.AnchorStyles.Right)));
                  this.button2.Font = new System.Drawing.Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
                  this.button2.Location = new System.Drawing.Point(496, 120);
                  this.button2.Name = "button2";
                  this.button2.Size = new System.Drawing.Size(120, 88);
                  this.button2.TabIndex = 0;
                  this.button2.Text = "Get";
                  this.button2.Click += new System.EventHandler(this.button2_Click);
                  //
                  // label3
                  //
                  this.label3.Location = new System.Drawing.Point(8, 80);
                  this.label3.Name = "label3";
                  this.label3.Size = new System.Drawing.Size(168, 23);
                  this.label3.TabIndex = 5;
                  this.label3.Text = "Some text";
                  //
                  // someText
                  //
                  this.someText.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
                        | System.Windows.Forms.AnchorStyles.Left)
                        | System.Windows.Forms.AnchorStyles.Right)));
                  this.someText.Location = new System.Drawing.Point(72, 80);
                  this.someText.Name = "someText";
                  this.someText.Size = new System.Drawing.Size(520, 20);
                  this.someText.TabIndex = 3;
                  this.someText.Text = "";
                  //
                  // configSection
                  //
                  this.configSection.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
                        | System.Windows.Forms.AnchorStyles.Left)
                        | System.Windows.Forms.AnchorStyles.Right)));
                  this.configSection.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
                  this.configSection.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
                  this.configSection.Items.AddRange(new object[] {
                                                                                             "EncryptedSql: Encrypted in SQL Server",
                                                                                             "UnencryptedSql: Unencrypted SQL Server",
                                                                                             "EncryptedXml: Encrypted Xml File (config)",
                                                                                             "UnencryptedXml: Unencrypted Xml File (config)",
                                                                                             "EncryptedRegistry: Encrypted Registry Reader",
                                                                                             "UnencryptedRegistry: Unencrypted Registry Reader",
                                                                                             "XmlSerializer: XmlFile using generic section handler",
                                                                                             "OtherConfigFile: Unencrypted Xml using other config file"});
                  this.configSection.Location = new System.Drawing.Point(8, 120);
                  this.configSection.Name = "configSection";
                  this.configSection.Size = new System.Drawing.Size(456, 24);
                  this.configSection.TabIndex = 6;
                  //
                  // readOnlySection
                  //
                  this.readOnlySection.Enabled = false;
                  this.readOnlySection.Location = new System.Drawing.Point(8, 152);
                  this.readOnlySection.Name = "readOnlySection";
                  this.readOnlySection.Size = new System.Drawing.Size(144, 24);
                  this.readOnlySection.TabIndex = 10;
                  this.readOnlySection.Text = "IsReadOnly section";
                  //
                  // Form1
                  //
                  this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
                  this.ClientSize = new System.Drawing.Size(632, 214);
                  this.Controls.Add(this.readOnlySection);
                  this.Controls.Add(this.configSection);
                  this.Controls.Add(this.someText);
                  this.Controls.Add(this.sizeText);
                  this.Controls.Add(this.colorText);
                  this.Controls.Add(this.label2);
                  this.Controls.Add(this.label1);
                  this.Controls.Add(this.button2);
                  this.Controls.Add(this.label3);
                  this.Name = "Form1";
                  this.Text = "Form1";
                  this.ResumeLayout(false);

            }
            #endregion

            /// <summary>
            /// The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main()
            {                  
                  Application.Run(new Form1());
            }


            private void button2_Click(object sender, System.EventArgs e)
            {
                  try
                  {
                  if( configSection.SelectedIndex != -1 )
                  {
                        string souceSection = ((string)configSection.SelectedItem).Split(COLON.ToCharArray())[0];
                        CustomConfigurationData cclass = (CustomConfigurationData)ConfigurationManager.Read( souceSection );
                        if( cclass == null )
                              throw new ApplicationException( "testapp:no config on provider." );

                        colorText.Text = cclass.Color;
                        sizeText.Text = cclass.Size.ToString( System.Globalization.CultureInfo.CurrentUICulture );
                        someText.Text = cclass.SomeText;

                        readOnlySection.Checked = ConfigurationManager.IsReadOnly( souceSection );
                  }
                  else
                  {
                        MessageBox.Show( "Must select the source section." );
                  }
                  }
                  catch( Exception ex )
                  {
                        string message = "";
                        for( Exception tempException = ex; tempException != null; tempException = tempException.InnerException )
                        {
                              message += tempException.Message + Environment.NewLine + "----------" + Environment.NewLine;
                        }
                        MessageBox.Show( message );
                  }
            }
      }
}

are you referring to this ?
0
 

Author Comment

by:Yann de Champlain, PMP
ID: 11729615
yes this and other files. and all the XML sections requested by the class library.
Seems that I also need CustomConfigurationData.cs, app.config, CustomSectionHandler.cs
I think I need to sleep a little and start over ;-)
0
 
LVL 37

Expert Comment

by:gregoryyoung
ID: 11729722
ummm all of the other code is the code to the library (it includes source) you dont need to change any of that.
0
 

Author Comment

by:Yann de Champlain, PMP
ID: 11729774
Ok. I progressed a little.  Now I get a Invalid cast from the line

private Hashtable _configData;
_configData = (Hashtable)ConfigurationManager.Read("UnencryptedXml");

Here is my app.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
      <configSections>
            <section
                  name="applicationConfigurationManagement"
                  type="CompanyName.Services.ConfigurationManagement.ConfigurationManagerSectionHandler,CompanyName.Services.ConfigurationManagement, Version=1.0.0.0,Culture=neutral,PublicKeyToken=null" />
            
            <section
                        name="EncryptedXml"  
                        type="TSBackup.CustomSectionHandler,TSBackup, Version=1.0.0.0,Culture=neutral,PublicKeyToken=null" />
            <section
                        name="UnencryptedXml"
                        type="TSBackup.CustomSectionHandler,TSBackup, Version=1.0.0.0,Culture=neutral,PublicKeyToken=null" />
      </configSections>

    <EncryptedXml>
        <signature>
        </signature>
        <encryptedData>fLivcJGbFoqW+di0aSZk1vr+KxfpKDwhxOEzjk+nTOe4ztloqqE9CT9G8HDjxhblUiQfRNuxYGhuBhb1u5zceipZ8FMAkfgbT3d8m7r0Iovq+34cp4zdUo7CwIbgSB/Ucm+PYC4Y9uYRVxswSCvPI4+c2zVkn/erQO6zObpLSwaUfemiRawf1/Q42QqNhi5PCX8QPy7dIUZqjimaXw/vqgV6SdXqN53/Qt+rrcRQvrrzyZd31e4myKqB+eAxyteEK9+rVLMb+DcWztg91V9xiY+d+vA7zrybyK9us4Mut7U=</encryptedData>
    </EncryptedXml>
 
      <UnencryptedXml>
                        <CustomConfigurationData xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                              <Color>Burnt Orange</Color>
                              <SomeText>FROM THE CONFIG FILE, not encrypted</SomeText>
                              <Size>3245</Size>
                        </CustomConfigurationData>      
      </UnencryptedXml>
      
      <applicationConfigurationManagement defaultSection="UnencryptedXml" >
            <configSection name="EncryptedXml">
                  <configCache enabled="false" refresh="1 * * * *" />
                  <configProvider             assembly="CompanyName.Services.ConfigurationManagement,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null"
                                                      type="CompanyName.Services.ConfigurationManagement.Storage.XmlFileStorage"
                                                      signed="false"
                                                      refreshOnChange="false"
                                                      encrypted="true" />
                  <protectionProvider       assembly="CompanyName.Services.ConfigurationManagement,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null"
                                                      type="CompanyName.Services.ConfigurationManagement.DataProtection.BCLDataProtection"
                                                      hashKey="MyXuEd6f+go=" symmetricKey="VToaqZjp8C27V90oSmT/CF+afvRGClc9" initializationVector="ou95G2/WziI="/>
            </configSection>
                  
            <configSection name="UnencryptedXml">
                  <configCache enabled="true" refresh="1 * * * *" />
                  <configProvider             assembly="CompanyName.Services.ConfigurationManagement,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null"
                                                      type="CompanyName.Services.ConfigurationManagement.Storage.XmlFileStorage"
                                                      signed="false"
                                                      refreshOnChange="true"
                                                      encrypted="false" />
                  <protectionProvider       assembly="CompanyName.Services.ConfigurationManagement,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null"
                                                      type="CompanyName.Services.ConfigurationManagement.DataProtection.BCLDataProtection"
                                                      hashKey="MyXuEd6f+go=" symmetricKey="VToaqZjp8C27V90oSmT/CF+afvRGClc9" initializationVector="ou95G2/WziI="/>
            </configSection>

      </applicationConfigurationManagement>
</configuration>


0
 
LVL 37

Expert Comment

by:gregoryyoung
ID: 11729885
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
      <configSections>
            <section
                  name="applicationConfigurationManagement"
                  type="Microsoft.ApplicationBlocks.ConfigurationManagement.ConfigurationManagerSectionHandler,Microsoft.ApplicationBlocks.ConfigurationManagement, Version=1.0.0.0,Culture=neutral,PublicKeyToken=null" />
            
            <section
                  name="ApplConfig1"  
                  type="Microsoft.ApplicationBlocks.ConfigurationManagement.XmlHashtableSectionHandler,Microsoft.ApplicationBlocks.ConfigurationManagement,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null" />
                                                
      </configSections>
   
  <ApplConfig1>
    <XmlSerializableHashtable xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <Entries>
        <Entry>
          <key xsi:type="xsd:string">freaky</key>
          <value xsi:type="xsd:string">chakra</value>
        </Entry>
        <Entry>
          <key xsi:type="xsd:string">killer</key>
          <value xsi:type="xsd:string">DILLER</value>
        </Entry>
        <Entry>
          <key xsi:type="xsd:string">foo</key>
          <value xsi:type="xsd:string">bar</value>
        </Entry>
        <Entry>
          <key xsi:type="xsd:string">depeche</key>
          <value xsi:type="xsd:string">mode</value>
        </Entry>
        <Entry>
          <key xsi:type="xsd:string">Bubba</key>
          <value xsi:type="xsd:string">Gump</value>
        </Entry>
      </Entries>
    </XmlSerializableHashtable>
  </ApplConfig1>
 
      
      <applicationConfigurationManagement >
            <configSection name="ApplConfig1">
                  <configCache                   enabled="true"
                                                      refresh="1 * * * *" />
                  <configProvider             assembly="Microsoft.ApplicationBlocks.ConfigurationManagement,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null"
                                                      type="Microsoft.ApplicationBlocks.ConfigurationManagement.Storage.XmlFileStorage"
                                                      
                                                      refreshOnChange="false"
                                                      signed="false"
                                                      encrypted="false" />

                  <protectionProvider       assembly="Microsoft.ApplicationBlocks.ConfigurationManagement,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null"
                                                      type="Microsoft.ApplicationBlocks.ConfigurationManagement.DataProtection.BCLDataProtection"
                                                      hashKeyRegistryPath="" hashKey="MyXuEd6f+go=" symmetricKey="VToaqZjp8C27V90oSmT/CF+afvRGClc9" initializationVector="ou95G2/WziI="/>
                                                      
            </configSection>
      </applicationConfigurationManagement>
</configuration>

is from the example .. notice the different usage of the hashtable ...
0
 

Author Comment

by:Yann de Champlain, PMP
ID: 11729984
I found my problem I think.

I was waiting for a HAshTable but the exemple section UnencryptedXML return a CustomConfigurationData type.  
This is why I has to have this file to map the value in the object properties.

I'll start over using the other one.
0
 

Author Comment

by:Yann de Champlain, PMP
ID: 11730043
I was using the read exemple not the hashtable. And in the help file they say that we need to receive a hashtable. Than I started to mix both together.
0
 
LVL 37

Accepted Solution

by:
gregoryyoung earned 500 total points
ID: 11730054
its alot to take in but its very powerful.
0
 

Author Comment

by:Yann de Champlain, PMP
ID: 11730107
Ya it seems.

Could you just confirm that If I dont want to learn the whole Class Library, I am in the good direction just to use the Hashtable type Exemple and leave the others on the side?
0
 
LVL 37

Expert Comment

by:gregoryyoung
ID: 11730127
it would be reasonable for the time being it does not sound to me like you will need the full functionality from the beginning. You can always learn the rest later :)
0
 

Author Comment

by:Yann de Champlain, PMP
ID: 11751534
Ya sure.
thank again.
0
 
LVL 37

Expert Comment

by:gregoryyoung
ID: 11754353
btw: if you have MSDN meetings coming through your area one of their current meetings discusses this application  block
0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In order to hide the "ugly" records selectors (triangles) in the rowheaders, here are some suggestions. Microsoft doesn't have a direct method/property to do it. You can only hide the rowheader column. First solution, the easy way The first sol…
This article aims to explain the working of CircularLogArchiver. This tool was designed to solve the buildup of log file in cases where systems do not support circular logging or where circular logging is not enabled
Established in 1997, Technology Architects has become one of the most reputable technology solutions companies in the country. TA have been providing businesses with cost effective state-of-the-art solutions and unparalleled service that is designed…

830 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question