arşiv

‘C#’ kategorisi için arşiv

NInject Cheat Sheet

Çarşamba, 07 Kas 2018 yorum yok
Categories: C# Tags:

Tlbimp.exe (Type Library Importer)

Salı, 16 Eki 2018 yorum yok

The Type Library Importer converts the type definitions found within a COM type library into equivalent definitions in a common language runtime assembly. The output of Tlbimp.exe is a binary file (an assembly) that contains runtime metadata for the types defined within the original type library. You can examine this file with tools such as Ildasm.exe.

https://github.com/dotnet/docs/blob/master/docs/framework/tools/tlbimp-exe-type-library-importer.md

Categories: C# Tags:

web.config ‘e proxy eklemek

Perşembe, 02 Ağu 2018 yorum yok
<system.net>
    <defaultProxy useDefaultCredentials="true">
      <proxy
        usesystemdefault="True"
        proxyaddress="http://127.X.X.X:8080"
        bypassonlocal="True"
      />
    </defaultProxy>
  </system.net>

 

Categories: C# Tags:

Is it possible to specify proxy credentials in your web.config?

Perşembe, 02 Ağu 2018 yorum yok
namespace SomeNameSpace
{
    public class MyProxy : IWebProxy
    {
        public ICredentials Credentials
        {
            get { return new NetworkCredential("user", "password"); }
            //or get { return new NetworkCredential("user", "password","domain"); }
            set { }
        }

        public Uri GetProxy(Uri destination)
        {
            return new Uri("http://my.proxy:8080");
        }

        public bool IsBypassed(Uri host)
        {
            return false;
        }
    }
}

 

<defaultProxy enabled="true" useDefaultCredentials="false">
  <module type = "SomeNameSpace.MyProxy, SomeAssembly" />
</defaultProxy>

 

Kaynak: https://stackoverflow.com/questions/186800/is-it-possible-to-specify-proxy-credentials-in-your-web-config#

Categories: C# Tags:

Excel dosyasından veri oku

Cumartesi, 31 Mar 2018 yorum yok

 

 

 

 

 

 

devamını oku…

Categories: C# Tags: ,

Tasarım Desenleri ve Mimarileri

Pazartesi, 26 Mar 2018 yorum yok
Categories: bestURL, C# Tags: ,

(HttpWebRequest)WebRequest.Create(url);

Perşembe, 15 Mar 2018 yorum yok
try
{
	WebProxy oWebProxy = new WebProxy(ConfigurationManager.AppSettings["ProxyAddress"])
	{
		Credentials = CredentialCache.DefaultCredentials
	};

	string url = "htt://www.yakupkalebasi.com/";
	var req = (HttpWebRequest)WebRequest.Create(url);
	req.Proxy = oWebProxy;
	req.Method = "GET";

	var resp = req.GetResponse();
	var outStream = resp.GetResponseStream();
	string output = "";
	using (StreamReader rdr = new StreamReader(outStream))
	{
		output = rdr.ReadToEnd();
	}
	Response.Write(output);
}
catch (Exception ex)
{
	Response.Write(ex.Message);
}

 

Categories: C# Tags:

IBAN Kontrol

Çarşamba, 28 Şub 2018 yorum yok
Categories: C# Tags:

IP Adres Bulma

Salı, 29 Ağu 2017 yorum yok
public string IP()
{
  string ip = ""
  if (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
  {
      ip = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
      if (!string.IsNullOrEmpty(ip))
      {
          string[] ipRange = ip.Split(",".ToCharArray());
          ip = ipRange[0];
      }
  }
  if (string.IsNullOrEmpty(ip))
      if (HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"] != null)
          ip = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString();
  ip = ip.Trim();
  return ip;
}

 

Categories: C# Tags:

String Format for DateTime

Cuma, 28 Tem 2017 yorum yok

This site has great examples check it out

// create date time 2008-03-09 16:05:07.123
DateTime dt = new DateTime(2008, 3, 9, 16, 5, 7, 123);

String.Format("{0:y yy yyy yyyy}",      dt);  // "8 08 008 2008"   year
String.Format("{0:M MM MMM MMMM}",      dt);  // "3 03 Mar March"  month
String.Format("{0:d dd ddd dddd}",      dt);  // "9 09 Sun Sunday" day
String.Format("{0:h hh H HH}",          dt);  // "4 04 16 16"      hour 12/24
String.Format("{0:m mm}",               dt);  // "5 05"            minute
String.Format("{0:s ss}",               dt);  // "7 07"            second
String.Format("{0:f ff fff ffff}",      dt);  // "1 12 123 1230"   sec.fraction
String.Format("{0:F FF FFF FFFF}",      dt);  // "1 12 123 123"    without zeroes
String.Format("{0:t tt}",               dt);  // "P PM"            A.M. or P.M.
String.Format("{0:z zz zzz}",           dt);  // "-6 -06 -06:00"   time zone

// month/day numbers without/with leading zeroes
String.Format("{0:M/d/yyyy}",           dt);  // "3/9/2008"
String.Format("{0:MM/dd/yyyy}",         dt);  // "03/09/2008"

// day/month names
String.Format("{0:ddd, MMM d, yyyy}",   dt);  // "Sun, Mar 9, 2008"
String.Format("{0:dddd, MMMM d, yyyy}", dt);  // "Sunday, March 9, 2008"

// two/four digit year
String.Format("{0:MM/dd/yy}",           dt);  // "03/09/08"
String.Format("{0:MM/dd/yyyy}",         dt);  // "03/09/2008"

Standard DateTime Formatting

String.Format("{0:t}", dt);  // "4:05 PM"                           ShortTime
String.Format("{0:d}", dt);  // "3/9/2008"                          ShortDate
String.Format("{0:T}", dt);  // "4:05:07 PM"                        LongTime
String.Format("{0:D}", dt);  // "Sunday, March 09, 2008"            LongDate
String.Format("{0:f}", dt);  // "Sunday, March 09, 2008 4:05 PM"    LongDate+ShortTime
String.Format("{0:F}", dt);  // "Sunday, March 09, 2008 4:05:07 PM" FullDateTime
String.Format("{0:g}", dt);  // "3/9/2008 4:05 PM"                  ShortDate+ShortTime
String.Format("{0:G}", dt);  // "3/9/2008 4:05:07 PM"               ShortDate+LongTime
String.Format("{0:m}", dt);  // "March 09"                          MonthDay
String.Format("{0:y}", dt);  // "March, 2008"                       YearMonth
String.Format("{0:r}", dt);  // "Sun, 09 Mar 2008 16:05:07 GMT"     RFC1123
String.Format("{0:s}", dt);  // "2008-03-09T16:05:07"               SortableDateTime
String.Format("{0:u}", dt);  // "2008-03-09 16:05:07Z"              UniversalSortableDateTime

/*
Specifier   DateTimeFormatInfo property     Pattern value (for en-US culture)
    t           ShortTimePattern                    h:mm tt
    d           ShortDatePattern                    M/d/yyyy
    T           LongTimePattern                     h:mm:ss tt
    D           LongDatePattern                     dddd, MMMM dd, yyyy
    f           (combination of D and t)            dddd, MMMM dd, yyyy h:mm tt
    F           FullDateTimePattern                 dddd, MMMM dd, yyyy h:mm:ss tt
    g           (combination of d and t)            M/d/yyyy h:mm tt
    G           (combination of d and T)            M/d/yyyy h:mm:ss tt
    m, M        MonthDayPattern                     MMMM dd
    y, Y        YearMonthPattern                    MMMM, yyyy
    r, R        RFC1123Pattern                      ddd, dd MMM yyyy HH':'mm':'ss 'GMT' (*)
    s           SortableDateTi­mePattern             yyyy'-'MM'-'dd'T'HH':'mm':'ss (*)
    u           UniversalSorta­bleDateTimePat­tern    yyyy'-'MM'-'dd HH':'mm':'ss'Z' (*)
                                                    (*) = culture independent   
*/
// create date time 2008-03-09 16:05:07.123
DateTime dt = new DateTime(2008, 3, 9, 16, 5, 7, 123);

$"{dt:y yy yyy yyyy}";  // "8 08 008 2008"   year
$"{dt:M MM MMM MMMM}";  // "3 03 Mar March"  month
$"{dt:d dd ddd dddd}";  // "9 09 Sun Sunday" day
$"{dt:h hh H HH}";      // "4 04 16 16"      hour 12/24
$"{dt:m mm}";           // "5 05"            minute
$"{dt:s ss}";           // "7 07"            second
$"{dt:f ff fff ffff}";  // "1 12 123 1230"   sec.fraction
$"{dt:F FF FFF FFFF}";  // "1 12 123 123"    without zeroes
$"{dt:t tt}";           // "P PM"            A.M. or P.M.
$"{dt:z zz zzz}";       // "-6 -06 -06:00"   time zone

// month/day numbers without/with leading zeroes
$"{dt:M/d/yyyy}";    // "3/9/2008"
$"{dt:MM/dd/yyyy}";  // "03/09/2008"

// day/month names
$"{dt:ddd, MMM d, yyyy}";    // "Sun, Mar 9, 2008"
$"{dt:dddd, MMMM d, yyyy}";  // "Sunday, March 9, 2008"

// two/four digit year
$"{dt:MM/dd/yy}";    // "03/09/08"
$"{dt:MM/dd/yyyy}";  // "03/09/2008"

 

ASP.NET 4.0’da ClientIDMode ile HTML ID’lerinin kontrolü.

Pazartesi, 10 Tem 2017 yorum yok

ASP.NET'te en sevmediğim özelliklerden biri yaratılan HTML kodu üzerindeki kontrolün pek de mümkün olmaması. Aslında bu sevmediğim özellik ASP.NET'in işimizi bu kadar kolaylaştırabilmesini sağlayan en önemli altyapısı ile ilişkili. Fakat derdime çare arayacak olsam aslında tam olarak da yaratılan HTML kontrollerinin ID'lerine takıldığımı söyleyebilirim. Boyumu aşan ID'leri kontrol edememek bir de bu ID'lere JavaScript ile ulaşmak zorunda kalmak ölümcül bir deneyim!

Neden bahsediyorsun?

Bahsettiğim şey aslında basit bir Repeater bile olabilir. Örneğin sayfanıza bir Repeater yerleştirdiniz ve içinde de çok basit bir Label bulunuyor. Aslında tek yapmak istediğiniz elinizdeki ürünlerin isimlerini listelemek diyelim. Bu durumda kabaca kullanacağınız Repeater yapısı aşağıdaki gibi olacaktır.

<asp:repeater id="Repeater1" runat="server">
    <ItemTemplate>
        <asp:Label ID="lbl_UrunAdi" runat="server" Text='<%# Eval("Adi") %>'></asp:Label>
    </ItemTemplate>
</asp:repeater>

Peki bu ASP.NET kodu çalıştığında ortaya HTML olarak ne çıkacak dersiniz? Gelin aşağıdaki HTML'i beraber inceleyelim.

Devamı http://daron.yondem.com/software/post/cb60cff9-5cc0-44b0-8dfb-0fc51243c1ae

Categories: Asp.NET, C# Tags: ,

Windows Server 2012 / IIS 8.0 uygulamalarında tarih formatının “d.M.yyyy” olarak değişmiş olması

Cuma, 07 Tem 2017 yorum yok

Merhaba Arkadaşlar,

Varsayılan tarih formatı “Windows Server 2012” üzerinde, “Windows Server 2008 R2” den farklı olduğu için, IIS uygulamalarınızı IIS 8.0 üzerine taşırken, uygulamanızda kullanmakta olduğunuz tarih formatlarında değişiklik olduğunu farketmiş olabilirsiniz.

Bunu en basitinden aşağıdaki “aspx” kodunu kullanarak test edebilirsiniz. Bu kod “System.DateTime.Now” çıktısını ekrana dökecektir:

Kaynak ve yazının devamı https://blogs.msdn.microsoft.com/devtr/2013/05/22/windows-server-2012-iis-8-0-uygulamalarnda-tarih-formatnn-d-m-yyyy-olarak-deimi-olmas/

Sitenizin culture durumu için aşağıdaki script kullanabilirsiniz.

<script>
	console.log('Default: ' + '<%=System.DateTime.Now%>');
	console.log('Local Time: ' + '<%=System.DateTime.Now.ToLocalTime()%>');
	console.log('Short Time: ' + '<%=System.DateTime.Now.ToShortDateString()%>');
	console.log('ToString Default: ' + '<%=System.DateTime.Now.ToString()%>');
	console.log('Universal Time: ' + '<%=System.DateTime.Now.ToUniversalTime()%>');
	console.log('d – Short Date: ' + '<%=System.DateTime.Now.ToString("d")%>');
	console.log('g – General: ' + '<%=System.DateTime.Now.ToString("g")%>');
</script>

 

Online C# Compile

Pazartesi, 03 Tem 2017 yorum yok
Categories: bestURL, C# Tags: ,

How to change WSDL URL from internal machine name to public?

Cuma, 09 Haz 2017 yorum yok
<serviceBehaviors>
   <behavior name="<name>">
     <!-- Other options would go here -->
     <useRequestHeadersForMetadataAddress>
       <defaultPorts> <!-- Use your own port numbers -->
          <add scheme="http" port="81" />
          <add scheme="https" port="444" />
        </defaultPorts>
      </useRequestHeadersForMetadataAddress>
   </behavior>
</serviceBehaviors>

Kaynak: https://stackoverflow.com/questions/5007270/how-to-change-wsdl-url-from-internal-machine-name-to-public?answertab=votes#tab-top

Categories: C#, WCF Tags: ,

C# Caller Information

Cuma, 26 May 2017 yorum yok
namespace CallerInfo
{
    public class CallerInfoExample
    {
        public void Log(String logMessage, [CallerMemberName] string callerName="", 
                                           [CallerLineNumber] int lineNumber=0, 
                                           [CallerFilePath] string filePath="")
        {
            Console.WriteLine("Çağrıldığı Dosya=" + filePath);   
            Console.WriteLine("Çağıran Metod="+callerName);
            Console.WriteLine("Çağrıldığı Satır Numarası=" + lineNumber); 
        }        
    }
}

namespace CallerInfo
{
    class Test
    {
        static void Main()
        {
            CallerInfoExample callerInfo = new CallerInfoExample();
            callerInfo.Log("Caller Info Test");
        }
    }
}

 

Categories: C# Tags:

Mapper kütüphaneleri Performans Testi

Pazartesi, 08 May 2017 yorum yok

Aşağıdaki yazının sonuç kısmını paylaşmak istedim.

4 Farklı renklere ayrılma sebebi 1,10,100 ve 1000 kayıt üzerinde yapılan işlemler sonucunda hangi Mapper türünün ne kadar sürdüğünü ayırtedebilmek için. 4 farklı değerdeki parametre sonucunda mapper türlerinin performans testi sıralamasının bozulmadığını görüyoruz. En performanslı çalışan yöntem Linq Select metodudur. Fakat her dto nesnesi için oluşacak mappingleri kendiniz manuel yapacağınız için bu mapping türünü gözardı edebiliriz bu işi Source, Target eşleşmesi yardımıyla otomatik yapan diğer 4 Mapper kütüphanesine bakacak olursak TinyMapper’in Linq’dan sonra en performanlı Mapper yöntemi olduğu görüyoruz. TinyMapper’i AutoMapper ve Onuda ExpressMapper takip ediyor. Kendi yöntemimiz olan Reflector ile mapper yerlerde sürünüyor smiley Ona hiç bakmaya gerek yok.

Yazıya göre en başarılı olan http://tinymapper.net/ gözüküyor.

http://www.muratoner.net/csharp/mapper-kutuphaneleri-performans-testi

Categories: C# Tags:

SQL Server Data Types and Their .NET Framework Equivalents

Perşembe, 24 Kas 2016 yorum yok
SQL Server data type     CLR data type (SQL Server)  CLR data type (.NET Framework)  
varbinary                SqlBytes, SqlBinary         Byte[]  
binary                   SqlBytes, SqlBinary         Byte[]  
varbinary(1), binary(1)  SqlBytes, SqlBinary         byte, Byte[] 
image                    None                        None
     
varchar                  None                        None
char                     None                        None
nvarchar(1), nchar(1)    SqlChars, SqlString         Char, String, Char[]     
nvarchar                 SqlChars, SqlString         String, Char[] 
nchar                    SqlChars, SqlString         String, Char[] 
text                     None                        None
ntext                    None                        None
     
uniqueidentifier         SqlGuid                     Guid 
rowversion               None                        Byte[]  
bit                      SqlBoolean                  Boolean 
tinyint                  SqlByte                     Byte 
smallint                 SqlInt16                    Int16  
int                      SqlInt32                    Int32  
bigint                   SqlInt64                    Int64 
     
smallmoney               SqlMoney                    Decimal  
money                    SqlMoney                    Decimal  
numeric                  SqlDecimal                  Decimal  
decimal                  SqlDecimal                  Decimal  
real                     SqlSingle                   Single  
float                    SqlDouble                   Double  
     
smalldatetime            SqlDateTime                 DateTime  
datetime                 SqlDateTime                 DateTime 
     
sql_variant              None                        Object  
User-defined type(UDT)   None                        user-defined type     
table                    None                        None 
cursor                   None                        None
timestamp                None                        None 
xml                      SqlXml                      None
Categories: C# Tags:

c# program info

Perşembe, 03 Kas 2016 yorum yok
string _AppName = "<unknown>";
var _MachineName = Environment.MachineName;
if (Assembly.GetEntryAssembly() != null)
{
    _AppName = Assembly.GetEntryAssembly().Location;
}
            
var _AppDomainFriendlyName = AppDomain.CurrentDomain.FriendlyName;
var _UTCTime = DateTime.UtcNow;
var _OSPlatform = Environment.OSVersion.Platform.ToString();
var _OSVersion = Environment.OSVersion.Version.ToString();
var _Stack = new StackTrace(0);
var _UserDomainName = Environment.UserDomainName;
var _UserName = Environment.UserName;
var _UserInteractive = Environment.UserInteractive;
var _RuntimeVersion = Environment.Version.ToString();

 

Categories: C# Tags:

C#’ta Çağıran Metod Bilgilerine Ulaşmak (CallerMemberName)

Salı, 01 Kas 2016 yorum yok

C# diliyle kodlama yaparken, zaman zaman bazı durumlarda, bir metodun hangi metoddan çağrıldığı, çağıran metod, bilgisine ulaşmamız gerekebiliyor. Örneğin loglama benim aklıma gelen durumlardan birisi, bir başka kullanım sebebi de, hatayı yakalamak olabilir. Bir metod sadece belli bir yerden çağrıldığında hataya düşebilir.

Bu durumlar için c# bize bazı kolaylıklar sunuyor. CallerMemberName özelliği.

Fakat daha önce c# dilinde böyle bir bilgiye nasıl ulaşabiliyorduk. Örnek bir program üzerinden bunu görelim:

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace callermethod
{
    class Program
    {
        private static void Add(int i, int j)
        {
            StackFrame frame = new StackFrame(1);
            var method = frame.GetMethod();
            var name = method.Name;

            Console.WriteLine("CallerMethod:" + name);
            Console.WriteLine("Sum:" + (i + j).ToString());
        }

        private static void MethodB()
        {
            Add(6,4);
        }

        private static void MethodA()
        {
            Add(2, 5);
        }

        static void Main(string[] args)
        {
            Add(5,6);
            MethodA();
            MethodB();

            Console.ReadLine();
        }
    }
}

cmd_1

 

 

 

İşaretli kısımlarda göründüğü gibi StackFrame nesnesi oluşturup onun üzerinden istediğimiz bilgiye ulaşıyoruz. Fakat bu yöntem, sistem kaynaklarını fazla tüketen bir alternatif.

Bunun yerine CallerMemberName, CallerFilePath, CallerLineNumber özelliklerini kullanarak, çağıran metod bilgisine ulaşabiliriz.

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;

namespace callermethod
{
    class Program
    {
        private static void Add(
            int i, int j,
        [CallerMemberName] string memberName = "",
        [CallerFilePath] string sourceFilePath = "",
        [CallerLineNumber] int sourceLineNumber = 0
            )
        {
            // Çağıran metodun bulunduğu dosyanın pathı, ve satır numarası isteniyorsa
            // CallerFilePath ve CallerLineNumber kullanılabilir.
            //Console.WriteLine("CallerFilePath:" + sourceFilePath);
            //Console.WriteLine("CallerLineNumber:" + sourceLineNumber);

            Console.WriteLine("CallerMethod:" + memberName);
            Console.WriteLine("Sum:" + (i + j).ToString());
        }

        private static void MethodB()
        {
            Add(6,4);
        }

        private static void MethodA()
        {
            Add(2, 5);
        }

        static void Main(string[] args)
        {
            Add(5,6);
            MethodA();
            MethodB();

            Console.ReadLine();
        }
    }
}

Kaynak : http://www.onbirkod.com/tag/callermembername/

Categories: C# Tags:

sealed Keyword’ü Nedir? Ne İşe Yarar?

Perşembe, 08 Eyl 2016 yorum yok

sealed keywordü bir class ve metod modifier(niteleyici)dır. Eğer bir class sealed komutuyla işaretlenmişse o classtan kalıtım yapılamaz. Yani o class başka bir sınıfın base classı olamaz. Ayriyetten bir metod sealed komutuyla işaretleniyorsa o metodtan türetilen sınıfların ilgili metodu override etmeleri önlenir.

C#'ta sealed Keyword'ü

Kaynak: http://www.gencayyildiz.com/blog/cta-sealed-keywordu/

Categories: C# Tags:

MVC Get Attributes

Çarşamba, 07 Eyl 2016 yorum yok
Assembly assembly = Assembly.GetExecutingAssembly();
IEnumerable<Type> types = assembly.GetTypes()
	.Where(
		type =>
			typeof(Controller).IsAssignableFrom(type) &&
			type.Name.Replace("Controller", "") == controllerName)
	.OrderBy(x => x.Name);

foreach (Type cls in types)
{                
	HelpAttribute helpAttribute = Attribute.GetCustomAttribute(cls, typeof(HelpAttribute)) as HelpAttribute;
	url = helpAttribute != null ? helpAttribute.Url : string.Empty;
	........
}

 

Categories: C#, MVC, Reflection Tags: , ,

MVC Get – Controllers, Actions, Attributes and Return Types – 2

Çarşamba, 07 Eyl 2016 yorum yok
Assembly assembly = Assembly.LoadFrom(sAssemblyFileName)
IEnumerable<Type> types = assembly.GetTypes().Where(type => typeof(Controller).IsAssignableFrom(type)).OrderBy(x => x.Name);
foreach (Type cls in types)
{
      list.Add(cls.Name.Replace("Controller", ""));
      IEnumerable<MemberInfo> memberInfo = cls.GetMethods(BindingFlags.Instance | BindingFlags.DeclaredOnly | BindingFlags.Public).Where(m => !m.GetCustomAttributes(typeof(System.Runtime.CompilerServices.CompilerGeneratedAttribute), true).Any()).OrderBy(x => x.Name);
      foreach (MemberInfo method in memberInfo)
      {
           if (method.ReflectedType.IsPublic && !method.IsDefined(typeof(NonActionAttribute)))
           {
                  list.Add("\t" + method.Name.ToString());
           }
      }
}

 

Categories: C#, MVC, Reflection Tags: , ,

MVC Get – Controllers, Actions, Attributes and Return Types

Çarşamba, 07 Eyl 2016 yorum yok
Assembly asm = Assembly.GetAssembly(typeof(MyWebDll.MvcApplication));

var controlleractionlist = asm.GetTypes()
        .Where(type=> typeof(System.Web.Mvc.Controller).IsAssignableFrom(type))
        .SelectMany(type => type.GetMethods(BindingFlags.Instance | BindingFlags.DeclaredOnly | BindingFlags.Public))
        .Where(m => !m.GetCustomAttributes(typeof( System.Runtime.CompilerServices.CompilerGeneratedAttribute), true).Any())
        .Select(x => new {Controller = x.DeclaringType.Name, Action = x.Name, ReturnType = x.ReturnType.Name, Attributes = String.Join(",", x.GetCustomAttributes().Select(a => a.GetType().Name.Replace("Attribute",""))) })
        .OrderBy(x=>x.Controller).ThenBy(x => x.Action).ToList();

 

Categories: C#, MVC, Reflection Tags: , ,

c# Mapping Class

Çarşamba, 07 Eyl 2016 yorum yok
public static class TypeExtensions
{
	public static void MapTo<T, S>(this S source, T target)
	{
		Type sourceType = source.GetType();
		Type targetType = target.GetType();

		var sourceProperties = sourceType.GetProperties();
		var targetProperties = targetType.GetProperties();

		for (int i = 0; i < sourceProperties.Length; i++)
		{
			var currentProperty = sourceProperties[i];
			var targetProperty = targetProperties
				.FirstOrDefault(p => p.Name == currentProperty.Name);
			if (targetProperty != null)
				targetProperty.SetValue(target, currentProperty.GetValue(source, null), null);
		}

	}
 
}

 

Categories: C# Tags:

Class To Html Table

Cuma, 02 Eyl 2016 yorum yok

List<T> olan bir veriyi html çıktı olarak hazırlama…

 

devamını oku…

Categories: C#, Reflection Tags: ,

Xml veriyi Class’a Atama

Cuma, 02 Eyl 2016 yorum yok
public static T SetXmlDataToViewModel&amp;lt;T&amp;gt;(T oViewModel, string xmlData)
{
	if (string.IsNullOrEmpty(xmlData))
	{
		return oViewModel;
	}

	XDocument dataXmlDoc = XDocument.Parse(xmlData);

	foreach (var prop in typeof(T).GetProperties())
	{
		if (dataXmlDoc.Descendants().SingleOrDefault(p =&amp;gt; p.Name.LocalName == prop.Name) != null)
			prop.SetValue(oViewModel, Convert.ChangeType(dataXmlDoc.Descendants().SingleOrDefault(p =&amp;gt; p.Name.LocalName == prop.Name).Value, prop.PropertyType));
	}

	return oViewModel;
}

 

Categories: C#, Reflection Tags: ,

C# 6.0 Yenilikleri – Null-conditional operators

Salı, 16 Ağu 2016 yorum yok

Null-conditional operators :  Herhangi bir class veya propertyleri null ise bunlara erişmek için null kontrolü yapmadan çok daha basit yolla değerleri çekebiliriz.

int? first = (customers != null) ? customers[0].Orders.Count() : null;

Yukarıdaki kodun yerine aşağıdakini kullanabiliriz.

int? first = customers?[0].Orders?.Count();

Böylece eski compiler’dan kurtulunca artık neler yapabileceğimizi gördük. Daha birçok yeniliğin kapıda olduğunu belirtir bloğumu takip etmenizi tavsiye ederim.

Detaylı Pdf: http://www.borakasmer.com/projects/ctp3-csharp-features.pdf

Kaynak : http://www.borakasmer.com/net-compiler-platform-roslyn/

Categories: C# Tags:

C# 6.0 Yenilikleri – Exception filters

Salı, 16 Ağu 2016 yorum yok

Exception filters : Yakalanan hatalara filitre konabilmektedir. Böylece belirtilen catch bloğunda sadece tanımlanan exception filtresine uygun exceptionlar yakalanır. Eğer hiçbir filitreye uymayan exception var ise stacktrace kaybolmadan işleme devam edilir. Aşağıdaki örnekte de görüldüğü gibi number değeri 50’den küçük olduğu için en sondaki catch’e düşmekte ve 1 değerini döndürmektedir. Eğer number 50’den büyük olur ise ilk cathc’e düşmekte ve geriye number’ın kendi değeri döndürülmektedir.

public class Point(int x, int y)
{
        string number = "45";
        public int GetNumber()
        {
            try
            {
                int.TryParse(number, out var x);
                throw new Exception();
                return x;
            }
            catch (Exception e) if (int.Parse(number) > 50)
            {
                return number;
            }
            catch (Exception e2)
            {               
                return 1;
            }
        }
}

 

Categories: C# Tags:

C# 6.0 Yenilikleri – Declaration expressions

Salı, 16 Ağu 2016 yorum yok

Declaration expressions : Expressionlar içerisinde artık tanımlama yapılabilmektedir. Ençok kullanıldığı yerler out parametreleridir.

 int.TryParse(number, out var x);
public class Customer
{ 
        public char[] Strings { get { return "a12b3d".ToCharArray(); } }
        public List<int> GetResult()
        {
            var result = (from s in Strings select int.TryParse(s.ToString(), out int i) ? i : -1).ToList();
            return result;
        }
}
 Customer newCustomer = new Customer();
 foreach (int num in newCustomer.GetResult())
 {
       WriteLine(num);
 }

Kaynak: http://www.borakasmer.com/net-compiler-platform-roslyn/

Categories: C# Tags:

C# 6.0 Yenilikleri – Extension methods

Salı, 16 Ağu 2016 yorum yok

Extension methods : Extension methodlar projeye using ile eklenebilmektedir.

using System.Linq.Enumerable;
class Program
    {
        static void Main(string[] args)
        {
            var range = Range(5, 17);
            var odd = Where(range, i => i % 2 == 1);
            foreach (int num in odd)
            {
                WriteLine(num);
            }
            ReadLine();
         }
     }

 

Categories: C# Tags:

C# 6.0 Yenilikleri – Using static

Salı, 16 Ağu 2016 yorum yok

Using static : Static class’lar using olarak projeye eklenebilmektedir.

using System.Console; using System.Math;
class Program 
{ 
    static void Main() 
    { 
       WriteLine(Sqrt(3*3 + 4*4)); 
    } 
}

 

Categories: C# Tags:

C# 6.0 Yenilikleri – Parameters on classes and structs

Salı, 16 Ağu 2016 yorum yok

Parameters on classes and structs : Classlar oluşturulurken constructer olmadan parametre alması sağlanmıştır.

public class RealCustomer(string firstName, string lastName) 
{ 
   public string FirstName { get; } = firstName;
   public string LastName { get; } = lastName; 
}

RealCustomer relCustomer = new RealCustomer("Yakup", "KALEBAŞI");
WriteLine(relCustomer.FirstName + " " + relCustomer.LastName);

 

Categories: C# Tags:

C# 6.0 Yenilikleri – Auto-property enhancements

Salı, 16 Ağu 2016 yorum yok
  • Auto-property enhancements : Propertyler’e değer atanmaması durumunda default değer atanabilmektedir.

     

    public class Customer 
    { 
        public string FirstName { get; set; } = "Yakup"; 
        public string LastName { get; set; } = "KALEBAŞI"; 
    }
    
     Customer newCustomer = new Customer();
     WriteLine(newCustomer.FirstName + " " + newCustomer.LastName);

     

Categories: C# Tags:

.Net Türkçe Tarih Sorununu Düzeltme

Salı, 26 Tem 2016 yorum yok

Bu işlemi yapabilmek için benim bulduğum iki yol var.

  1. Global.asax dosyasındaki "Application_BeginRequest" fonksiyonunun içeriğini aşağıdaki gibi düzenlemek yeterli olacaktır. Not: Hangi formata göre düzenleme yapacaksanız istediğiniz gibi fonksiyonun içeriğini ayarlayabilirsiniz.

     

     

     

    protected void Application_BeginRequest()
    {
        CultureInfo cInf = new CultureInfo("tr-TR", false);
        
        cInf.DateTimeFormat.DateSeparator = "/";
        cInf.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy";
        cInf.DateTimeFormat.LongDatePattern = "dd/MM/yyyy HH:mm:ss tt";
    
        System.Threading.Thread.CurrentThread.CurrentCulture = cInf;
        System.Threading.Thread.CurrentThread.CurrentUICulture = cInf;
    }

     

  2. İkinci yol ise IIS üzerinden yapılabilir.
    IIS_Config
Categories: Asp.NET, C#, MVC Tags: , ,

Biri “Wrapper” mı dedi :)

Çarşamba, 29 Haz 2016 yorum yok

Diyelim bir kütüpane kullanıyorsunuz. Kendi yazdığımız kodun içinden direk o kütüpanenin kodlarına erişmek yerine araya girerek kendi sınıfınız içinden istediğiniz işlemleri kütüpaneye yaptırmaktır.

Kullandığınız kütüphanelerin çoğu, genel amaçlar için yazılmıştır. Dolayısıyla, arayüzleri oldukça ayrıntılı, uzun konfigürasyonlu falan olabilir. Sizin kullanacağınızdan çok daha fazla fonksiyonalite içerebilir. Siz, araya yazacağınız katman ile, bu ayrıntı ve komplike kısmı kendi kodunuzun geri kalanından saklayıp, sanki o kütüphane tam olarak sizin amaçlarınıza hizmet etmek için yazılmış gibi bir arayüz yaratırsınız.

İkinci sebep de şudur: Eğer kütüphaneyi bir gün değiştirmeye kalkarsanız (bu sandığınızdan çok daha sık yaşanan bir durumdur — versiyon değişikliği bile dert olabilir) ve eğer arada bir katman yoksa, o kütüphane fonksiyonlarının kendi kodunuza ne kadar derinlemesine sızmış olduğuna fena halde şaşırabilirsiniz. Halbuki, arada bir katman varsa (kabuk demek geldi içimden, ama onu “shell” eşdeğeri olarak kullanıyoruz) sadece o kısımda kullanım şeklini değiştirince, her şey çözümlüş olur…

Categories: C# Tags:

Inline – Base64 Image Send Mail

Çarşamba, 24 Şub 2016 yorum yok
MailMessage oMailMessage = new MailMessage();

int PictureId = 1;
string ImgUrl = "Base64Data";
string cidPictureId = "picture" + PictureId;

byte[] data = System.Convert.FromBase64String(ImgUrl);
MemoryStream ms = new MemoryStream(data);

string htmlBody = "<h3>Mail Body İçereği</h3><img src=\"cid:" + cidPictureId + "\">";
AlternateView avHtml = AlternateView.CreateAlternateViewFromString(htmlBody, null, MediaTypeNames.Text.Html);

ms.Position = 0;
LinkedResource picture = new LinkedResource(ms) { ContentId = cidPictureId };
avHtml.LinkedResources.Add(picture);

oMailMessage.AlternateViews.Add(avHtml);

oMailMessage.From = new MailAddress("kalebasiyakup@gmail.com", "Yakup From");
oMailMessage.To.Add(new MailAddress("kalebasiyakup@gmail.com", "Yakup To"));
oMailMessage.Subject = "A picture using alternate views";
SmtpClient client = new SmtpClient("smtp.sunucu.com");
client.Send(oMailMessage);

 

Categories: C# Tags:

SignalR Uygulama Örneği

Çarşamba, 15 Nis 2015 yorum yok
Categories: C# Tags:

Custom Functions with Entity Framework

Perşembe, 19 Şub 2015 yorum yok
Categories: C#, Entity Framework Tags: ,

AngularJS MVC Repository

Perşembe, 29 Oca 2015 yorum yok
Categories: bestURL, C# Tags: ,

Rijndael Şifreleme Algoritması

Pazartesi, 19 Oca 2015 yorum yok
Categories: bestURL, C# Tags: ,

Html Barkod

Perşembe, 01 Oca 2015 yorum yok


// JavaScript BarCode39 v. 1.0 (c) Lutz Tautenhahn, 2005
// The author grants you a non-exclusive, royalty free, license to use,
// modify and redistribute this software.
// This software is provided "as is", without a warranty of any kind.

string Chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. *$/+%";
string[] Codes = {
"111221211","211211112","112211112","212211111","111221112","211221111","112221111","111211212",
"211211211","112211211","211112112","112112112","212112111","111122112","211122111","112122111",
"111112212","211112211","112112211","111122211","211111122","112111122","212111121","111121122",
"211121121","112121121","111111222","211111221","112111221","111121221","221111112","122111112",
"222111111","121121112","221121111","122121111","121111212","221111211","122111211","121121211",
"121212111","121211121","121112121","111212121"};
string[] BarPic = { "http://www.yakupkalebasi.com/AttachFiles/b.gif", "http://www.yakupkalebasi.com/AttachFiles/w.gif" };

private string Code39(string theX, string theY, int theBarHeight, int theFontHeight, string theBarCodeText, int theBarCodeSize)
{
    StringBuilder stringBuilder = new StringBuilder();
    string position = string.Empty;
    string fontStyle = string.Empty;
    int barCodeSize = 1;

    if (theBarCodeSize > 0)
        barCodeSize = Convert.ToInt32(theBarCodeSize);

    if (barCodeSize == null)
        barCodeSize = 1;

    if (barCodeSize < 1)
        barCodeSize = 1;

    if (!string.IsNullOrWhiteSpace(theX) && !string.IsNullOrWhiteSpace(theY))
    {
        position = "position:absolute;left:" + theX + ";top:" + theY + ";";
    }

    if (theFontHeight > 4 && (theBarHeight >= 2 * theFontHeight))
    {
        fontStyle = "style=\"font-size:" + theFontHeight + "px;font-family:Verdana;\"";

        stringBuilder.Append("<div style=\"" + position + "font-size:" + theFontHeight + "px;font-family:Verdana;\">");
        stringBuilder.Append("<table noborder=\"\" cellpadding=\"0\" cellspacing=\"0\">");
        stringBuilder.Append("<tr>");
        stringBuilder.Append("<td rowspan=\"2\" valign=\"top\">" + CodePics("*", theBarHeight, barCodeSize) + "</td>");

        for (int i = 0; i < theBarCodeText.Length; i++)
            stringBuilder.Append("<td>" + CodePics(theBarCodeText.Substring(i, 1), theBarHeight - theFontHeight - 1, barCodeSize) + "</td>");

        stringBuilder.Append("<td rowspan=\"2\" valign=\"top\">" + CodePics("*", theBarHeight, barCodeSize) + "</td>");
        stringBuilder.Append("</tr>");
        stringBuilder.Append("<tr>");

        for (int i = 0; i < theBarCodeText.Length; i++)
            stringBuilder.Append("<td align=\"center\" " + fontStyle + ">" + theBarCodeText.Substring(i, 1) + "</td>");

        stringBuilder.Append("</tr>");
        stringBuilder.Append("</table>");
        stringBuilder.Append("</div>");
    }
    else
    {
        stringBuilder.Append("<div style=\"" + position + "\"><table noborder=\"0\" cellpadding=\"0\" cellspacing=\"0\">");
        stringBuilder.Append("<tr>");
        stringBuilder.Append("<td>" + CodePics("*", theBarHeight, barCodeSize) + "</td>");

        for (int i = 0; i < theBarCodeText.Length; i++)
            stringBuilder.Append("<td>" + CodePics(theBarCodeText.Substring(i, 1), theBarHeight, barCodeSize) + "</td>");

        stringBuilder.Append("<td>" + CodePics("*", theBarHeight, barCodeSize) + "</td>");
        stringBuilder.Append("</tr>");
        stringBuilder.Append("</table>");
        stringBuilder.Append("</div>");
    }

    return stringBuilder.ToString();
}

private string CodePics(string theChar, int theHeight, int theSize)
{
    string retVal = "";
    string cc = "9";
    int counter = Chars.IndexOf(theChar);

    if (counter >= 0)
        cc = Codes[counter];

    for (counter = 0; counter < cc.Length; counter++)
    {
        retVal += "<img src=\"" + BarPic[counter % 2] + "\" width=\"" + ((Convert.ToInt32(cc.Substring(counter, 1)) * (3 * theSize - theSize % 2) - theSize + theSize % 2) / 2) + "\" height=\"" + theHeight + "\">";
    }

    retVal += "<img src=\"" + BarPic[counter % 2] + "\" width=\"" + theSize + "\" height=\"" + theHeight + "\">";

    return (retVal);
}
Categories: C# Tags:

Nuget paket oluşturma ve yayınlama

Pazartesi, 17 Kas 2014 yorum yok

Merhabalar,

Microsoft.NET Paket yönetim aracı olan Nuget üzerinde bir paket oluşturma ve yayınlama aşamalarını anlatacağım.

Paket yönetim platformları kendi yazdığınız ya da daha önce başkaları tarafından yazılan kütüphaneleri kolay ve merkezi olarak kulllanımını sağlar. Yazılım mimarisi içerisinde Cross-Cutting Concern dediğimiz uygulama katmanlarından bağımsız fonksiyonellikler içeren Loglama, Exception Handling, Security, Caching, Transaction gibi konular üzerinde kütüphaneler yayınlanır ve herkes tarafından kullanılır. Nuget Gallery paket yönetim uygulaması açık kaynak kodlu ve dolayısıyla kendi nuget gallerimiz için kurabiliriz.

devamını oku…

Categories: C# Tags:

c# hata satır,method ve dosya bulma

Cuma, 31 Eki 2014 yorum yok

// satır numarasına erişebilmek için true değerini atıyoruz
StackTrace trace = new StackTrace(true);
foreach (StackFrame frame in trace.GetFrames())
{
    if (!string.IsNullOrEmpty(frame.GetFileName()))
    {
        Console.WriteLine(frame.GetFileLineNumber());
        Console.WriteLine(frame.GetMethod());
        Console.WriteLine(frame.GetFileName());
        Console.WriteLine("------------------------------------");

        int sonHane = frame.GetFileName().LastIndexOf("\\");
        int toplamUzunluk = frame.GetFileName().Length;
        string hataForm = frame.GetFileName().Substring(sonHane + 1, toplamUzunluk - sonHane - 1);
        string hataMethod = frame.GetMethod().Name;
        int hataSatir = frame.GetFileLineNumber();
        LogKaydet(hataForm, hataMethod, hataSatir);
    }
}
Categories: C# Tags:

UDP Send & Listening

Cuma, 17 Eki 2014 yorum yok

Örnek uygulamalar: UDPListening UDPMessageSend 

Categories: C# Tags:

WCF Log tutmak için gerekli olan web.config ayarları

Perşembe, 25 Eyl 2014 yorum yok
System.serviceModel içine eklenecek olan,
    </system.serviceModel>
        <diagnostics>
            <messageLogging logMalformedMessages="true" logMessagesAtTransportLevel="true" />
        </diagnostics>    
    </system.serviceModel>

Web config içine System.diagnotics içeriği,
    <system.diagnostics>
        <sources>
            <source name="System.ServiceModel.MessageLogging" switchValue="Warning,ActivityTracing">
                <listeners>
                    <add type="System.Diagnostics.DefaultTraceListener" name="Default">
                        <filter type="" />
                    </add>
                    <add name="ServiceModelMessageLoggingListener">
                        <filter type="" />
                    </add>
                </listeners>
            </source>
            <source propagateActivity="true" name="System.ServiceModel" switchValue="Warning,ActivityTracing">
                <listeners>
                    <add type="System.Diagnostics.DefaultTraceListener" name="Default">
                        <filter type="" />
                    </add>
                    <add name="ServiceModelTraceListener">
                        <filter type="" />
                    </add>
                </listeners>
            </source>
        </sources>
        <sharedListeners>
            <add initializeData="x:\Log\Client.dll_messages.svclog"
                type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
                name="ServiceModelMessageLoggingListener" traceOutputOptions="Timestamp">
                <filter type="" />
            </add>
            <add initializeData="x:\Log\Client.dll_tracelog.svclog"
                type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
                name="ServiceModelTraceListener" traceOutputOptions="Timestamp">
                <filter type="" />
            </add>
        </sharedListeners>
    </system.diagnostics>

 

Categories: C#, WCF Tags: ,

WCF – MaxItemsInObjectGraph Error

Çarşamba, 24 Eyl 2014 yorum yok
Categories: C#, WCF Tags: ,

Visual Source Safe e Hızlı Bir Bakış

Cuma, 29 Ağu 2014 yorum yok

Visual SourceSafe ile çalışmak

Çalışırken aslında ihtiyacınız olan ve bilmeniz gereken üç tane komut var,

  1. Check Out
  2. Check In
  3. Get Latest Version

Check Out dosyanın düzenlenmesinin sizde olduğunu anlatır, böylece başkası dosya üzerinde işlem yapamaz (2005 sürümünde, özellikle Team System ile birlikte öne çıkarıla bir özelliği ise aynı anda Check In yapılabilme yeteneği, şöyle düşünelim, ben bir vb dosyasına a methodunu ekliyorum, başkası aynı vb dosyasına b methodunu ekliyor, o vb dosyasında metotlarımız karışmadan alt alta ekleniyor. Peki farklı iki kişi aynı dosyanın bir metodunu editlemiş ise ne oluyor ? VISUAL SOURCESAFE uyarı veriyor ve hangi şekilde düzenlenmesini istediğinizi soruyor) başkasının dosya üzerinde işlem yapamamasının sebebi Visual SourceSafe o dosyayı veri tabanında kilitler ve başkasının düzenlemesine izin vermez. Taaki sizin işiniz bitene, yani Check In yapana kadar.

Check In işlemi, sizin dosyayı düzenledikten sonra düzenlenmiş hali en son halidir deyip, Visual SourceSafe e yolladığınız halidir. Böylece sizin dosya ile işiniz bitmiştir ve başka kullanıcılar alıp, onu düzenleyebilir haldedir.

Get Latest Version işlemi ise Check In yapılan dosyaların en son sürümlerinin Visual SourceSafe de saklanılan hallerini benim localimdeki çalıştığım dosyalarla değiştir demek oluyor. Böylece sizde projenin en yeni hali oluyor. Get Latest Version ile ilgili birşey eklemek istiyorum her zaman iki kere Get Latest Version yapın..:)

 

http://www.yazilimgunlugu.com/visual-source-safe-e-hizli-bir-bakis-makalesi/280.aspx

http://www.estanbul.com/bir-projenin-visual-source-safe-ile-entegrasyonu-122327.html#.VHWu_4usWVM

Categories: C#, Genel Tags: ,

pdf Dosyası oluşturma

Pazartesi, 25 Ağu 2014 yorum yok
Categories: bestURL, C# Tags: ,

Dictionary, Literal ve Serialization kullanımı

Cuma, 15 Ağu 2014 yorum yok

Dictionary, Literal ve Serialization kullanımı için örnek dosya ornek_1

Categories: C# Tags:

C# Temel bilgiler . . .

Perşembe, 14 Ağu 2014 yorum yok
Categories: C# Tags:

Kalıtım (Inheritance) Nedir ve Nasıl Kullanılır

Salı, 12 Ağu 2014 yorum yok
Categories: C# Tags:

CollectionPager İle Repeater veya DataList İle Sayfalama

Çarşamba, 04 Haz 2014 yorum yok
Categories: C# Tags:

c# APIs :)

Cumartesi, 12 Nis 2014 yorum yok
Categories: C# Tags: