دیباگ کنید چه اطلاعاتی در دسترس هست؟
foreach (var claim in User.Claims) { Debug.WriteLine($"Claim type: {claim.Type} - Claim value: {claim.Value}"); }
foreach (var claim in User.Claims) { Debug.WriteLine($"Claim type: {claim.Type} - Claim value: {claim.Value}"); }
public class Triangle { private int _height; private int _baseLength; public int Height { get { return _height; } set { if (value < 1 || value > 100) { // تولید خطا } _height = value; } } public int BaseLength { get { return _baseLength; } set { if (value < 1 || value > 100) { // تولید خطا } _baseLength = value; } } public double Area { get { return _height * _baseLength * 0.5; } } }
public Triangle() { _height = _baseLength = 1; }
Triangle triangle = new Triangle(); Console.WriteLine(triangle.Height); Console.WriteLine(triangle.BaseLength); Console.WriteLine(triangle.Area);
public Triangle(int height, int baseLength) { Height = height; BaseLength = baseLength; }
Triangle triangle = new Triangle(5, 8); Console.WriteLine(triangle.Height); Console.WriteLine(triangle.BaseLength); Console.WriteLine(triangle.Area);
this.Load += new System.EventHandler(this.Page_Load);
<% @Page AutoEventWireup="true" %>
Page_PreInit
Page_Init
Page_InitComplete
Page_PreLoad
Page_Load
Page_LoadComplete
Page_DataBind
Page_SaveStateComplete
Page_PreRender
Page_PreRenderComplete
Page_Unload
Page_Error
Page_AbortTransaction
Page_CommitTransaction
public static int FindDuplicateImagesCount(string pdfFileName) { int count = 0; var pdf = new PdfReader(pdfFileName); var md5 = new MD5CryptoServiceProvider(); var enc = new UTF8Encoding(); var imagesHashList = new List<string>(); int intPageNum = pdf.NumberOfPages; for (int i = 1; i <= intPageNum; i++) { var page = pdf.GetPageN(i); var resources = PdfReader.GetPdfObject(page.Get(PdfName.RESOURCES)) as PdfDictionary; if (resources == null) continue; var xObject = PdfReader.GetPdfObject(resources.Get(PdfName.XOBJECT)) as PdfDictionary; if (xObject == null) continue; foreach (var name in xObject.Keys) { var pdfObject = xObject.Get(name); if (!pdfObject.IsIndirect()) continue; var imgObject = PdfReader.GetPdfObject(pdfObject) as PdfDictionary; if (imgObject == null) continue; var subType = PdfReader.GetPdfObject(imgObject.Get(PdfName.SUBTYPE)) as PdfName; if (subType == null) continue; if (!PdfName.IMAGE.Equals(subType)) continue; byte[] imageBytes = PdfReader.GetStreamBytesRaw((PRStream)imgObject); var md5Hash = enc.GetString(md5.ComputeHash(imageBytes)); if (!imagesHashList.Contains(md5Hash)) { imagesHashList.Add(md5Hash); } else { Console.WriteLine("Found duplicate image @page: {0}.", i); count++; } } } pdf.Close(); return count; }
public class PdfSmartCopy2 : PdfSmartCopy { public PdfSmartCopy2(Document document, Stream os) : base(document, os) { } /// <summary> /// This is a forgotten feature in iTextSharp 5.3.4. /// Actually its PdfSmartCopy is useless without this! /// </summary> protected override PdfIndirectReference CopyIndirect(PRIndirectReference inp, bool keepStructure, bool directRootKids) { return base.CopyIndirect(inp); } } public static void RemoveDuplicateObjects(string inFile, string outFile) { var document = new Document(); var copy = new PdfSmartCopy2(document, new FileStream(outFile, FileMode.Create)); document.Open(); var reader = new PdfReader(inFile); var n = reader.NumberOfPages; for (int page = 0; page < n; ) { copy.AddPage(copy.GetImportedPage(reader, ++page)); } copy.FreeReader(reader); document.Close(); }
private static void CreateTestFile() { using (var pdfDoc = new Document(PageSize.A4)) { var pdfWriter = PdfWriter.GetInstance(pdfDoc, new FileStream("Test.pdf", FileMode.Create)); pdfDoc.Open(); var table = new PdfPTable(new float[] { 1, 2 }); table.AddCell(Image.GetInstance("01.png")); table.AddCell(Image.GetInstance("01.png")); pdfDoc.Add(table); } }
اینبار دو تصویر داریم که هر دو به یک stream اشاره میکنند. تصاویر فوق به کمک برنامه iText RUPS تهیه شدهاند.
public class Book { public int Code { get; set; } public string Title { get; set; } public string Category { get; set; } }
public class NoteBook { public int Code { get; set; } public string Title { get; set; } }
static void Main( string[] args ) { Book book = new Book() { Code = 1, Title = "Book1", Category = "Default" }; NoteBook noteBook = new NoteBook(); noteBook = (NoteBook)book;//Compile error noteBook = book as NoteBook;//Compile error }
public class Book { public int Code { get; set; } public string Title { get; set; } public string Category { get; set; } public static explicit operator NoteBook( Book book ) { return new NoteBook() { Code = book.Code, Title = book.Title }; } }
static void Main( string[] args ) { Book book = new Book() { Code = 1, Title = "Book1", Category = "Default" }; NoteBook noteBook = new NoteBook(); noteBook = (NoteBook)book;//Correct }
در بالا مشاهده میکنید که حتما باید به طور صریح عملیات Cast رو انجام دهیددر غیر این صورت همچنان خطا خواهید داشت. اما میتوان این مراحل رو هم نادیده گرفت و تبدیل رو به صورت Implicit انجام داد.
#Implicit Casting
public class Book { public int Code { get; set; } public string Title { get; set; } public string Category { get; set; } public static implicit operator NoteBook( Book book ) { return new NoteBook() { Code = book.Code, Title = book.Title }; } }
static void Main( string[] args ) { Book book = new Book() { Code = 1, Title = "Book1", Category = "Default" }; NoteBook noteBook = new NoteBook(); noteBook = book;//Correct }
public static class TimeoutExtensions { private static void ExecuteTimeoutCommon(Task actionTask, TimeSpan maxDelay) { var delayTask = Task.Delay(maxDelay); var finishedTaskIndex = Task.WaitAny(actionTask, delayTask); if (finishedTaskIndex != 0) { throw new TimeoutException("Action did not finish in the desired time slot."); } } public static void ExecuteTimeout<T>(Func<T> func, TimeSpan maxDelay) { var executionTask = Task.Run(() => { func(); }); ExecuteTimeoutCommon(executionTask, maxDelay); } public static void ExecuteTimeout(Action action, TimeSpan maxDelay) { var executionTask = Task.Run(() => { action(); }); ExecuteTimeoutCommon(executionTask, maxDelay); } }
TimeoutExtensions.ExecuteTimeout(Console.ReadLine, TimeSpan.FromSeconds(3));
var ownerId = this.User.Claims.FirstOrDefault(claim => claim.Type == "sub")?.Value; var response = await httpClient.GetAsync($"api/v1/orders/GetOrderByIdAsync?id={ownerId}");
public static IEnumerable<Client> Clients => new List<Client> { new Client { ClientId = "oidcClient", ClientName = "Example Client Application", ClientSecrets = new List<Secret> {new Secret("VQGBtSDEK7tzIzSJyfCYqdHDTQHt7kD2VQ1hHWnY7Dw=".Sha256())}, // change me! AllowedGrantTypes = GrantTypes.Hybrid, RedirectUris = new List<string> {"https://localhost:6001/signin-oidc"}, PostLogoutRedirectUris = new List<string> { "https://localhost:6001/signout-callback-oidc" }, AllowedScopes = new List<string> { IdentityServerConstants.StandardScopes.OpenId, IdentityServerConstants.StandardScopes.Profile, IdentityServerConstants.StandardScopes.Email, IdentityServerConstants.StandardScopes.Address, "role", "api.ordering.manager" }, RequirePkce=false, AllowOfflineAccess = true } };
public static IEnumerable<IdentityResource> Resources => new List<IdentityResource> { new IdentityResources.OpenId(), new IdentityResources.Profile(), new IdentityResources.Email(), new IdentityResources.Address(), new IdentityResource { Name = "role", UserClaims = new List<string> {"role"} } };
export class MyService {}
let svc = new MyService();
constructor(private _myService: MyService){}
import { Injectable } from 'angular2/core'; import { IProduct } from './product'; @Injectable() export class ProductService { getProducts(): IProduct[] { return [ { "productId": 2, "productName": "Garden Cart", "productCode": "GDN-0023", "releaseDate": "March 18, 2016", "description": "15 gallon capacity rolling garden cart", "price": 32.99, "starRating": 4.2, "imageUrl": "app/assets/images/garden_cart.png" }, { "productId": 5, "productName": "Hammer", "productCode": "TBX-0048", "releaseDate": "May 21, 2016", "description": "Curved claw steel hammer", "price": 8.9, "starRating": 4.8, "imageUrl": "app/assets/images/rejon_Hammer.png" } ]; } }
import { Component } from 'angular2/core'; import { ProductListComponent } from './products/product-list.component'; import { ProductService } from './products/product.service'; @Component({ selector: 'pm-app', template:` <div><h1>{{pageTitle}}</h1> <pm-products></pm-products> </div> `, directives: [ProductListComponent], providers: [ProductService] }) export class AppComponent { pageTitle: string = "DNT AngularJS 2.0 APP"; }
import { ProductService } from './product.service'; export class ProductListComponent implements OnInit { pageTitle: string = 'Product List'; imageWidth: number = 50; imageMargin: number = 2; showImage: boolean = false; listFilter: string = 'cart'; constructor(private _productService: ProductService) { }
private _productService: ProductService; constructor(productService: ProductService) { _productService = productService; }
products: IProduct[];
this.products = _productService.getProducts();
export class ProductListComponent implements OnInit { products: IProduct[]; constructor(private _productService: ProductService) { } ngOnInit(): void { //console.log('In OnInit'); this.products = this._productService.getProducts(); }
using System.Threading.Tasks; using Telegram.Bot; namespace Bot.Engine.Console { public class Program { Api bot; string botToken = "BOT_TOKEN"; public static void Main(string[] args) { Task.Run(() => RunBot(botToken)); System.Console.ReadLine(); } /// <summary> /// /// </summary> public static async Task RunBot(string botToken) { #region راه اندازی ربات bot = new Api(botToken); var me = await bot.GetMe(); if (me != null) { System.Console.WriteLine("bot started {0}", me.Username); } else { System.Console.WriteLine("get bot failed "); } #endregion #region شروع گوش دادن به درخواستها var whileCount = 0; var offset = 0; while (true) { System.Console.WriteLine("while no {0}", whileCount); whileCount += 1; try { var updates = await bot.GetUpdatesAsync(offset); var updatesCount = updates.Count(); System.Console.WriteLine("updates count is {0}", updatesCount); System.Console.WriteLine("================================================================"); if (updatesCount > 0) { foreach (var update in updates) { try { offset = update.Id + 1; if (update.Message.Text!=null) { //echo msg await bot.SendTextMessageAsync(update.Message.Chat.Id, update.Message.Text); } else { await bot.SendTextMessageAsync(update.Message.Chat.Id, "لطفا یک پیام متنی بفرستید"); } } catch (Exception ex) { bot.SendTextMessage(update.Message.Chat.Id, ex.ToString()); } } continue; } } catch (Exception ex) { System.Console.WriteLine("Error Msg = {0}",ex.Message); } } #endregion } } }
نکته: دقت کنید که تنها یک فولدر App_GlobalResources به هر پروزه میتوان افزود. همچنین در ریشه هر مسیر موجود در پروژه تنها میتوان یک فولدر Appp_LocalResources داشت. پس از افزودن هر یک از این فولدرهای مخصوص، منوی فوق به صورت زیر در خواهد آمد:
protected object GetLocalResourceObject(string resourceKey) protected object GetLocalResourceObject(string resourceKey, Type objType, string propName)
txtTest.Text = GetLocalResourceObject("txtTest.Text") as string;
protected object GetGlobalResourceObject(string className, string resourceKey) protected object GetGlobalResourceObject(string className, string resourceKey, Type objType, string propName)
TextBox1.Text = GetGlobalResourceObject("Resource1", "String1") as string;
public static object GetLocalResourceObject(string virtualPath, string resourceKey) public static object GetLocalResourceObject(string virtualPath, string resourceKey, CultureInfo culture)
txtTest.Text = HttpContext.GetLocalResourceObject("~/Default.aspx", "txtTest.Text") as string;
public static object GetGlobalResourceObject(string classKey, string resourceKey) public static object GetGlobalResourceObject(string classKey, string resourceKey, CultureInfo culture)
TextBox1.Text = HttpContext.GetGlobalResourceObject("Resource1", "String1") as string;
//------------------------------------------------------------------------------ // <auto-generated> // This code was generated by a tool. // Runtime Version:4.0.30319.17626 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // </auto-generated> //------------------------------------------------------------------------------ namespace Resources { using System; /// <summary> /// A strongly-typed resource class, for looking up localized strings, etc. /// </summary> // This class was auto-generated by the StronglyTypedResourceBuilder // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option or rebuild the Visual Studio project. [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Web.Application.StronglyTypedResourceProxyBuilder", "10.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resource1 { private static global::System.Resources.ResourceManager resourceMan; private static global::System.Globalization.CultureInfo resourceCulture; [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] internal Resource1() { } /// <summary> /// Returns the cached ResourceManager instance used by this class. /// </summary> [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Resources.ResourceManager ResourceManager { get { if (object.ReferenceEquals(resourceMan, null)) { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Resources.Resource1", global::System.Reflection.Assembly.Load("App_GlobalResources")); resourceMan = temp; } return resourceMan; } } /// <summary> /// Overrides the current thread's CurrentUICulture property for all /// resource lookups using this strongly typed resource class. /// </summary> [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Globalization.CultureInfo Culture { get { return resourceCulture; } set { resourceCulture = value; } } /// <summary> /// Looks up a localized string similar to String1. /// </summary> internal static string String1 { get { return ResourceManager.GetString("String1", resourceCulture); } } } }
TextBox1.Text = Resources.Resource1.String1;