Fortsättning på namespace
Fortsätter från detta.
3) Ta bort referensen till ClassLibrary1 och lägg till den på nytt men denan gång i debug.
Debugga projektet och försök "stiga in i" metoden med F11.
Anledningen till detta med kontrollen av debugging / Stiga in i för både i Release läge och Debug läge var just för att i web appar går det tydligen inte att göra det. Vet nu dock inte riktigt varför det fungerade i detta, kanske har med att det var i Console App.
Skall väll undersöka saken lite närmare om det är så att det skall vara så eller om jag i misstag kommit åt någon "feat." som stänger av den funktionen :-)
Men nu fortsätter vi...
4) Använd ovanstående program (finns i tidigare inlägg) men lägg till ett using-statement till ClassLibrary1.BLL och ta bort "onödig kod" vid metodanropet.
Men lägger helt enkelt bara till i Program.cs
using ClassLibrary1.BLL;
Så kan man i koden även ändra från:
Console.Write("Är det en arbetsdag idag? " + ClassLibrary1.BLL.Helper.myToday());
Till:
Console.Write("Är det en arbetsdag idag? " + Helper.myToday());
5) Skapa ytterligare ett nytt projekt av typen Class Library och där den till ClassLibrary2.
Spara ner den i System007-mappen. Skapa sedan en klass som heter Helper i detta projekt och lägg denna i ett namespace som heter ClassLibrary2.BLL. Skriv sedan en publik statisk metod som med en DateTime svara på frågan vad klockan är just nu. Kompilera i debug och release.
(ClassLibrary2)Helper.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ClassLibrary2.BLL
{
public class Helper
{
public static string TimeRightNow()
{
DateTime time = DateTime.Now; //sätter time till en DateTime och kör in vad datum/tid är just nu
return time.ToShortTimeString(); // returnerar värdet från time med kort variant av tid hh:mm
// return time.ToLongTimeString(); // returnerar värdet från time fast med lång variant av tid hh:mm:ss
}
}
}
6) Lägg till referens till ClassLibrary2.BLL i ditt huvudprojekt och lägg till ett using-statement till denna. Anropa sedan metoden som svara på om det är en arbetsdag och metoden som svara på var klockan är just nu och meddela användaren det.
Svar: Här kommer det att krocka om man inte gör nått åt befintlig kod.
Eftersom koden just nu är:
...
using ClassLibrary1.BLL;
...
Console.Write("Är det en arbetsdag idag? " + Helper.myToday());
Och jag skulle då lägga till klockan där så kommer det att bli så här:
using ClassLibrary1.BLL;
using ClassLibrary2.BLL;
Console.Write("Är det en arbetsdag idag? " + Helper.myToday());
Console.Write("\nKlockan är just nu: " + Helper.TimeRightNow());
så kommer den att gnälla över Helper! Den finns ju på 2 ställen och hur vet man i koden vilken ClassLibrary den skall använda?
Well i detta läge är nog tanken att jag skall göra följande:
...
Console.Write("Är det en arbetsdag idag? " + ClassLibrary1.BLL.Helper.myToday());
Console.Write("\nKlockan är just nu: " + ClassLibrary2.BLL.Helper.TimeRightNow());
Man kan även som nästa del i lektionen gör också.
7) Använd ovanstående program och modifiera using-satserna så dom får varsitt alias.
ClassLibrary1.BLL får heta BLL_1 och ClassLibrary2.BLL får heta BLL_2.
Modifiera anropen till de 2 metoderna så att dom använder resp. alias.
Svar: Så det jag gör är att ändra lite i Programs.cs till följande
using BLL1 = ClassLibrary1.BLL.Helper; // Alias
using BLL2 = ClassLibrary2.BLL.Helper; // Alias
...
onsole.Write("Är det en arbetsdag idag? " + BLL1.myToday()); // Skriver ut resultatet från ClassLibrary1.BLL.Helper.myToday
Console.Write("\nKlockan är just nu: " + BLL2.TimeRightNow()); // Skriver ut resultatet från ClassLibrary2.BLL.Helper.TimeRightNow
Och otroligt nog blir då svaret samma!
Är det en arbetsdag idag? True
Klockan är just nu: 15:39

Allt detta med namespace har varit inom samma "Solution / FredrikUIL" så skall plocka ut dessa 2 ClassLibrarys och lägga dom i en egen Solution och se om det går bra att anropa de även från den?!
Vi får se :-)
3) Ta bort referensen till ClassLibrary1 och lägg till den på nytt men denan gång i debug.
Debugga projektet och försök "stiga in i" metoden med F11.
Anledningen till detta med kontrollen av debugging / Stiga in i för både i Release läge och Debug läge var just för att i web appar går det tydligen inte att göra det. Vet nu dock inte riktigt varför det fungerade i detta, kanske har med att det var i Console App.
Skall väll undersöka saken lite närmare om det är så att det skall vara så eller om jag i misstag kommit åt någon "feat." som stänger av den funktionen :-)
Men nu fortsätter vi...
4) Använd ovanstående program (finns i tidigare inlägg) men lägg till ett using-statement till ClassLibrary1.BLL och ta bort "onödig kod" vid metodanropet.
Men lägger helt enkelt bara till i Program.cs
using ClassLibrary1.BLL;
Så kan man i koden även ändra från:
Console.Write("Är det en arbetsdag idag? " + ClassLibrary1.BLL.Helper.myToday());
Till:
Console.Write("Är det en arbetsdag idag? " + Helper.myToday());
5) Skapa ytterligare ett nytt projekt av typen Class Library och där den till ClassLibrary2.
Spara ner den i System007-mappen. Skapa sedan en klass som heter Helper i detta projekt och lägg denna i ett namespace som heter ClassLibrary2.BLL. Skriv sedan en publik statisk metod som med en DateTime svara på frågan vad klockan är just nu. Kompilera i debug och release.
(ClassLibrary2)Helper.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ClassLibrary2.BLL
{
public class Helper
{
public static string TimeRightNow()
{
DateTime time = DateTime.Now; //sätter time till en DateTime och kör in vad datum/tid är just nu
return time.ToShortTimeString(); // returnerar värdet från time med kort variant av tid hh:mm
// return time.ToLongTimeString(); // returnerar värdet från time fast med lång variant av tid hh:mm:ss
}
}
}
6) Lägg till referens till ClassLibrary2.BLL i ditt huvudprojekt och lägg till ett using-statement till denna. Anropa sedan metoden som svara på om det är en arbetsdag och metoden som svara på var klockan är just nu och meddela användaren det.
Svar: Här kommer det att krocka om man inte gör nått åt befintlig kod.
Eftersom koden just nu är:
...
using ClassLibrary1.BLL;
...
Console.Write("Är det en arbetsdag idag? " + Helper.myToday());
Och jag skulle då lägga till klockan där så kommer det att bli så här:
using ClassLibrary1.BLL;
using ClassLibrary2.BLL;
Console.Write("Är det en arbetsdag idag? " + Helper.myToday());
Console.Write("\nKlockan är just nu: " + Helper.TimeRightNow());
så kommer den att gnälla över Helper! Den finns ju på 2 ställen och hur vet man i koden vilken ClassLibrary den skall använda?
Well i detta läge är nog tanken att jag skall göra följande:
...
Console.Write("Är det en arbetsdag idag? " + ClassLibrary1.BLL.Helper.myToday());
Console.Write("\nKlockan är just nu: " + ClassLibrary2.BLL.Helper.TimeRightNow());
Man kan även som nästa del i lektionen gör också.
7) Använd ovanstående program och modifiera using-satserna så dom får varsitt alias.
ClassLibrary1.BLL får heta BLL_1 och ClassLibrary2.BLL får heta BLL_2.
Modifiera anropen till de 2 metoderna så att dom använder resp. alias.
Svar: Så det jag gör är att ändra lite i Programs.cs till följande
using BLL1 = ClassLibrary1.BLL.Helper; // Alias
using BLL2 = ClassLibrary2.BLL.Helper; // Alias
...
onsole.Write("Är det en arbetsdag idag? " + BLL1.myToday()); // Skriver ut resultatet från ClassLibrary1.BLL.Helper.myToday
Console.Write("\nKlockan är just nu: " + BLL2.TimeRightNow()); // Skriver ut resultatet från ClassLibrary2.BLL.Helper.TimeRightNow
Och otroligt nog blir då svaret samma!
Är det en arbetsdag idag? True
Klockan är just nu: 15:39

Allt detta med namespace har varit inom samma "Solution / FredrikUIL" så skall plocka ut dessa 2 ClassLibrarys och lägga dom i en egen Solution och se om det går bra att anropa de även från den?!
Vi får se :-)
Kommentarer
Trackback