<?xml version="1.0" encoding="utf-8"?>
<!-- generator="FeedCreator 1.7.2-ppt DokuWiki" -->
<?xml-stylesheet href="https://wiki.borovicka.name/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://wiki.borovicka.name/feed.php">
        <title>wiki.borovicka.name programming:csharp</title>
        <description></description>
        <link>https://wiki.borovicka.name/</link>
        <image rdf:resource="https://wiki.borovicka.name/lib/tpl/artic/images/favicon.ico" />
       <dc:date>2026-04-30T11:52:56+02:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://wiki.borovicka.name/programming/csharp/aspnetshedule?rev=1529603281&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.borovicka.name/programming/csharp/bulkcopy?rev=1529603281&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.borovicka.name/programming/csharp/configfile?rev=1529603281&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.borovicka.name/programming/csharp/datetimefromexcel?rev=1529603281&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.borovicka.name/programming/csharp/exceptionhandling?rev=1529603281&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.borovicka.name/programming/csharp/executiontime?rev=1529603281&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.borovicka.name/programming/csharp/getextension?rev=1529603281&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.borovicka.name/programming/csharp/gettopnfromdatatable?rev=1529603281&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.borovicka.name/programming/csharp/lazyinitialization?rev=1529603281&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.borovicka.name/programming/csharp/md5hash?rev=1529603281&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.borovicka.name/programming/csharp/memebershipandroleprovider?rev=1529603281&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.borovicka.name/programming/csharp/readfromtextfile?rev=1529603281&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.borovicka.name/programming/csharp/regularexpressions?rev=1529603281&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.borovicka.name/programming/csharp/singleton?rev=1529603281&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://wiki.borovicka.name/lib/tpl/artic/images/favicon.ico">
        <title>wiki.borovicka.name</title>
        <link>https://wiki.borovicka.name/</link>
        <url>https://wiki.borovicka.name/lib/tpl/artic/images/favicon.ico</url>
    </image>
    <item rdf:about="https://wiki.borovicka.name/programming/csharp/aspnetshedule?rev=1529603281&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-06-21T19:48:01+02:00</dc:date>
        <title>programming:csharp:aspnetshedule</title>
        <link>https://wiki.borovicka.name/programming/csharp/aspnetshedule?rev=1529603281&amp;do=diff</link>
        <description>ASP.NET shedule


private const string ReloadBartCodes_CacheKey = &quot;ReloadBartCodes_CacheKey&quot;;
private const string HIT_PAGE_URL = &quot;http://hit_page_url/&quot;;

        private bool RegisterCacheEntry(string key, string value, int interval)
        {
            if (null != HttpContext.Current.Cache[key]) return false;

            HttpContext.Current.Cache.Add(key, value, null,
                                            DateTime.MaxValue, TimeSpan.FromMinutes(interval),
                             …</description>
    </item>
    <item rdf:about="https://wiki.borovicka.name/programming/csharp/bulkcopy?rev=1529603281&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-06-21T19:48:01+02:00</dc:date>
        <title>programming:csharp:bulkcopy</title>
        <link>https://wiki.borovicka.name/programming/csharp/bulkcopy?rev=1529603281&amp;do=diff</link>
        <description>Bulk Copy (fast db insert)

	*  Bulk copy is usually used when we need to insert bigger amount of data at once.
	*  For bulk copy we need to have data in DataTable and define mappings to destination table.
	*  Define mappings is not necessary when source and destination table are equivalent.</description>
    </item>
    <item rdf:about="https://wiki.borovicka.name/programming/csharp/configfile?rev=1529603281&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-06-21T19:48:01+02:00</dc:date>
        <title>programming:csharp:configfile</title>
        <link>https://wiki.borovicka.name/programming/csharp/configfile?rev=1529603281&amp;do=diff</link>
        <description>Configuration File

	*  for windows application we usually use app.config, for web application web.config

Get Connection String


var connStr = ConfigurationManager.ConnectionStrings[&quot;MyConnStr&quot;].ConnectionString;



Get App Settings


var settings = ConfigurationSettings.AppSettings[&quot;Mykey&quot;];</description>
    </item>
    <item rdf:about="https://wiki.borovicka.name/programming/csharp/datetimefromexcel?rev=1529603281&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-06-21T19:48:01+02:00</dc:date>
        <title>programming:csharp:datetimefromexcel</title>
        <link>https://wiki.borovicka.name/programming/csharp/datetimefromexcel?rev=1529603281&amp;do=diff</link>
        <description>Convert DateTime from excel



DateTime.FromOADate
DateTime.ToOADate



Resources

	*  &lt;http://dotnetperls.com/datetime-1&gt;</description>
    </item>
    <item rdf:about="https://wiki.borovicka.name/programming/csharp/exceptionhandling?rev=1529603281&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-06-21T19:48:01+02:00</dc:date>
        <title>programming:csharp:exceptionhandling</title>
        <link>https://wiki.borovicka.name/programming/csharp/exceptionhandling?rev=1529603281&amp;do=diff</link>
        <description>C# ASP.NET Exception handling

Ošetření vyjímek na úrovni aplikace

Pokud chceme, aby se uživateli neobjevila standardní hlaska Unhandled exception, nastavíme přesměrování na naší vlastní error stránku.


web.config


&lt;customErrors mode=&quot;RemoteOnly&quot; defaultRedirect=&quot;~/ErrorPage.aspx&quot;&gt; 
    &lt;error statusCode=&quot;404&quot; redirect=&quot;404.html&quot;/&gt; 
    &lt;error statusCode=&quot;500&quot; redirect=&quot;500.html&quot;/&gt;
&lt;/customErrors&gt;</description>
    </item>
    <item rdf:about="https://wiki.borovicka.name/programming/csharp/executiontime?rev=1529603281&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-06-21T19:48:01+02:00</dc:date>
        <title>programming:csharp:executiontime</title>
        <link>https://wiki.borovicka.name/programming/csharp/executiontime?rev=1529603281&amp;do=diff</link>
        <description>Execution time

DateTime.UtcNow

	*  very fast
	*  bad resolution (10 milliseconds)


DateTime begin = DateTime.UtcNow;
...
DateTime end = DateTime.UtcNow;
Console.WriteLine(&quot;Execution time: &quot; + (end-begin).TotalMilliseconds + &quot; ms.&quot;);


Stopwatch

	*</description>
    </item>
    <item rdf:about="https://wiki.borovicka.name/programming/csharp/getextension?rev=1529603281&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-06-21T19:48:01+02:00</dc:date>
        <title>programming:csharp:getextension</title>
        <link>https://wiki.borovicka.name/programming/csharp/getextension?rev=1529603281&amp;do=diff</link>
        <description>Get extension from file name


string extension;

extension = Path.GetExtension(fileName);



Resources

	*  &lt;http://msdn.microsoft.com/en-us/library/system.io.path.getextension.aspx&gt;</description>
    </item>
    <item rdf:about="https://wiki.borovicka.name/programming/csharp/gettopnfromdatatable?rev=1529603281&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-06-21T19:48:01+02:00</dc:date>
        <title>programming:csharp:gettopnfromdatatable</title>
        <link>https://wiki.borovicka.name/programming/csharp/gettopnfromdatatable?rev=1529603281&amp;do=diff</link>
        <description>Get TOP N from DataTable


        private DataTable GetTopN(DataTable dt, int RowCount, int Start)
        {
            DataTable table = dt.Clone();
            for(var i = Start; i &lt;= Start + RowCount; i++)
            {
                if( i &gt;= dt.Rows.Count ) break;
                table.ImportRow(dt.Rows[i]);
            }

            return table;
        }</description>
    </item>
    <item rdf:about="https://wiki.borovicka.name/programming/csharp/lazyinitialization?rev=1529603281&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-06-21T19:48:01+02:00</dc:date>
        <title>programming:csharp:lazyinitialization</title>
        <link>https://wiki.borovicka.name/programming/csharp/lazyinitialization?rev=1529603281&amp;do=diff</link>
        <description>Lazy initialization


        static readonly object padlock = new object();
        private DataSet _dataSet;

        public DataSet DataSet
        {
            get
            {
                lock (padlock)
                {
                    if (_dataSet == null)
                    {
                        _dataSet = new ...;
                    }
                }
                return _dataSet;
            }
        }</description>
    </item>
    <item rdf:about="https://wiki.borovicka.name/programming/csharp/md5hash?rev=1529603281&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-06-21T19:48:01+02:00</dc:date>
        <title>programming:csharp:md5hash</title>
        <link>https://wiki.borovicka.name/programming/csharp/md5hash?rev=1529603281&amp;do=diff</link>
        <description>MD5 Hash

	*  Returns MD5 Hash as string.


using System.Security.Cryptography;
...
        /// &lt;summary&gt;
        /// Creates MD5 hash as a string.
        /// &lt;/summary&gt;
        /// &lt;param name=&quot;bytearray&quot;&gt;Input array to be hashed.&lt;/param&gt;
        /// &lt;returns&gt;Returns MD5 hash string&lt;/returns&gt;
        public string GetMD5Hash(byte[] bytearray)
        {
            using (MD5 md5 = MD5.Create())
            {
                byte[] byteHashed = md5.ComputeHash(bytearray);
                return…</description>
    </item>
    <item rdf:about="https://wiki.borovicka.name/programming/csharp/memebershipandroleprovider?rev=1529603281&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-06-21T19:48:01+02:00</dc:date>
        <title>programming:csharp:memebershipandroleprovider</title>
        <link>https://wiki.borovicka.name/programming/csharp/memebershipandroleprovider?rev=1529603281&amp;do=diff</link>
        <description>Membership and Role Provider

&lt;http://localhost:10428/asp.netwebadminfiles/default.aspx?applicationPhysicalPath=c&gt;:\...\&amp;applicationUrl=/



  &lt;connectionStrings&gt;
    &lt;add name=&quot;FinancialCalculatorConnectionString&quot; 
         connectionString=&quot;Data Source=.\SQLEXPRESS;Initial Catalog=Database;User ID=user;Password=pasword&quot; 
         providerName=&quot;System.Data.SqlClient&quot;  /&gt;
  &lt;/connectionStrings&gt;</description>
    </item>
    <item rdf:about="https://wiki.borovicka.name/programming/csharp/readfromtextfile?rev=1529603281&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-06-21T19:48:01+02:00</dc:date>
        <title>programming:csharp:readfromtextfile</title>
        <link>https://wiki.borovicka.name/programming/csharp/readfromtextfile?rev=1529603281&amp;do=diff</link>
        <description>Read from text file

	*  Here is the code for reading from text file.



            StreamReader sr = null;
            string file = @&quot;c:\temp\test.txt&quot;;
            string line;

            try
            {
                sr = new StreamReader(file);
                while ((line = sr.ReadLine()) != null)
                {
                    Console.WriteLine(line);
                }
            }
            finally
            {
                if (sr!= null) sr.Dispose();
            }</description>
    </item>
    <item rdf:about="https://wiki.borovicka.name/programming/csharp/regularexpressions?rev=1529603281&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-06-21T19:48:01+02:00</dc:date>
        <title>programming:csharp:regularexpressions</title>
        <link>https://wiki.borovicka.name/programming/csharp/regularexpressions?rev=1529603281&amp;do=diff</link>
        <description>Regular expressions

Password


?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$

Passwords will contain at least (1) upper case letter
Passwords will contain at least (1) lower case letter
Passwords will contain at least (1) number or special character
Passwords will contain at least (8) characters in length
Password maximum length should not be arbitrarily limited

^.*(?=.{8,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$

Must be at least 8 characters , 
contain at least one lower case le…</description>
    </item>
    <item rdf:about="https://wiki.borovicka.name/programming/csharp/singleton?rev=1529603281&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-06-21T19:48:01+02:00</dc:date>
        <title>programming:csharp:singleton</title>
        <link>https://wiki.borovicka.name/programming/csharp/singleton?rev=1529603281&amp;do=diff</link>
        <description>Singleton

Singleton vs. static class

Singleton

	*  + we can use singletons as parameters
	*  + control over instantion 

Static class

	*  - lazy initialization
	*  + easier

Implementations

With locks

	*  Standard solution using locks.


public sealed class Singleton
{
    static Singleton _instance=null;
    static readonly object _lock = new object();

    Singleton()
    {
    }

    public static Singleton Instance
    {
        get
        {
            lock (_lock)
            {
    …</description>
    </item>
</rdf:RDF>
