poniedziałek, 30 listopada 2009

C# operator: as czy zwykłe rzutowanie z nawiasami

Który sposób rzutowania jest lepszy?
Rzutowanie za pomocą operatora as, czy "stary" sposób z uzyciem nawiasów (cast):

 
IAaa aa = obj as IAaa;
IAaa aa = (IAaa)obj;


Jesli używamy operatora as musimy pamietać, że gdy konwersja nie jest możliwa to:
cast rzuca wyjątek
operator as zwraca null


Stąd używając operatora as należy sprawdzić, czy wynik konwersji nie jest null.
Jesli tego nie sprawdzimy dostaniemy NullReferenceException na pierwszym odwołaniu do zmiennej.

sobota, 28 listopada 2009

log4net - pełna konfiguracja w kodzie

Kod tworzący appender:
private static log4net.Appender.FileAppender CreateAppender(string fileName, string appenderName)
{
log4net.Appender.RollingFileAppender fileAppender = new log4net.Appender.RollingFileAppender(); 

log4net.Layout.PatternLayout patternLayOut = new log4net.Layout.PatternLayout(); 
patternLayOut.Header = System.Environment.NewLine; 

patternLayOut.Footer = System.Environment.NewLine; 
patternLayOut.ConversionPattern = "%d %m%n"; 
patternLayOut.ActivateOptions(); 
fileAppender.Layout = patternLayOut; 
fileAppender.AppendToFile = true; 
fileAppender.File = fileName; 
fileAppender.Name = appenderName; 
fileAppender.MaxSizeRollBackups = 5; 
fileAppender.MaxFileSize = 100000; 
fileAppender.ActivateOptions(); 
return fileAppender; 
} 

Powyższy kod stosowalem dlatego, że nie umialem skierowac loga do pliku w katalogu APPDATA. Teraz już wiem jak to zrobić za pomocą xml. Scieżkę do loga można zdefiniować w sposób następujący:



<param name="File" value="${ALLUSERSPROFILE}/Company/Product/Logs/error.log"/>  

Jak wygenerować w SQL kod wypełniający tabelę danymi

Jak wygenerować w SQL kod wypełniający tabelę danymi:

 
CREATE TABLE [dbo].[ForInsert](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Kod] [varchar](20) NOT NULL,
[Opis] [varchar](255) NOT NULL,
[InsertInto] [varchar](1024) NOT NULL,
CONSTRAINT [ForInsertPrimary] PRIMARY KEY CLUSTERED
(
[Id] ASC
)
) ON [PRIMARY]
GO

INSERT INTO [dbo].[ForInsert] ([Kod],[Opis],[InsertInto]) VALUES('ALA', 'MA KOTA', '')
INSERT INTO [dbo].[ForInsert] ([Kod],[Opis],[InsertInto]) VALUES('AS', 'AS TO PIES ALI', '')
GO

UPDATE [dbo].[ForInsert]
SET [InsertInto] = 'INSERT INTO [dbo].[ForInsert] ([Kod],[Opis]) VALUES(''' + LTRIM(Kod) + ''',''' + LTRIM(Opis) + ')'
GO

SELECT [InsertInto] from [dbo].[ForInsert] ORDER BY Kod

środa, 4 listopada 2009

TFS - dobre rady (1)

1. Aby zmienić lokalną scieżkę do projektu należy otworzyć kartę: File -> Source Control -> Workspaces... i nacisnąć przycisk EDIT

2. Jesli robisz check-in na projekcie po usunięciu/zmienieniu nazwy plików to check-inuj także te zmienione/usunięte pliki bo później co innego jest w pliku projektu, a co innego w fizycznej strukturze plików i są problemy