dotnet6 Telegram.Bot前置作業

目的 在使用telegram機器人時,需要先在telegram新增要使用的機器人。 搜尋 搜尋@botfather 開始 點擊start 輸入/newbot指令 輸入/newbot指令後,對話欄會請你輸入你的名稱。 設定聊天機器人的顯示名稱 這邊所輸入的名稱,並沒有限制要Bot或_bot當結尾。 設定機器人帳號 其他人可以透過查詢帳號找到我們所建立的機器人。 當要輸入機器人帳號時,會限制要Bot或_bot結尾,需要特別注意。 取得token 如馬賽克處,是使用機器人時所要提供給api的token。 參考 官方文件

September 24, 2022

dotnet6 Bogus範例

目的 快速且簡單的製造假資料 建立新專案 選擇ASP.NET Core Web API專案範本,並執行下一步 設定新的專案 其他資訊 直接進行下一步 NuGet加入套件 透過NuGet安裝 Bogus 編輯WeatherForecastController檔案 將預設的API註解 //除了using Bogus外,需注意需要using static Bogus.DataSets.Name,為了取得Gender using static Bogus.DataSets.Name; [HttpGet("Test")] public List<User> Test() { //可限制隨機值為定值 //Randomizer.Seed = new Random(8675307); //建立一個假的貨品陣列 var fruit = new[] { "apple", "banana", "orange", "strawberry", "kiwi" }; //預設訂單編號為0 var orderIds = 0; //預設取得英文資料 var testOrders = new Faker<Order>() //強制所有屬性都要有規則存在,預設為false .StrictMode(true) //OrderId is deterministic .RuleFor(o => o.OrderId, f => orderIds++) //從自訂陣列隨機取值 .RuleFor(o => o.Item, f => f....

September 23, 2022

dotnet6 Autofac範例

目的 批次註冊 建立新專案 選擇ASP.NET Core Web API專案範本,並執行下一步 設定新的專案 命名你的專案名稱,並選擇專案要存放的位置。 其他資訊 直接進行下一步 NuGet加入套件 新增類別檔 新增之後需要來描述要批次注入的規則 加入前 加入後 並且繼承autofac的類別Module 編輯Program.cs檔案 //初始化並建立一個實例 builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory()); //註冊autofac這個容器 builder.Host.ConfigureContainer<ContainerBuilder>(builder => builder.RegisterModule(new AutofacModuleRegister())); 有繼承autofac的類別Module 新增資料夾 新增下圖兩個資料夾 新增類別檔 此次的目的是要可以進行批次注入,所以檔名結尾都需要包含Service,做批次注入時可以辨識 在Services資料夾底下加入類別檔案,名稱為TestService 在Interface資料夾底下加入介面檔案,名稱為ITest ITest.cs寫入程式 namespace AutoFacExample.Services.Interface { public interface ITest { public string GetName(string id); } } TestService.cs寫入程式 繼承介面後寫上與介面相同的方法 using AutoFacExample.Services.Interface; namespace AutoFacExample.Services { public class TestService : ITest { public string GetName(string id) { return $"{id}:Bill"; } } } AutofacModuleRegister執行批次註冊 protected override void Load(ContainerBuilder builder) { //RegisterAssemblyTypes => 註冊所有集合 //Where(t => t....

September 22, 2022

dotnet6 BenchmarkDotNet範例

目的 快速測試不同寫法的效能差異。 建立新專案 選擇主控台應用程式專案範本,並執行下一步 設定新的專案 命名你的專案名稱,並選擇專案要存放的位置。 其他資訊 直接進行下一步 NuGet加入套件 下載BenchmarkDotNet套件與automapper套件,automapper為這次要測試效能的套件 Program寫入程式 此次要測試的項目為三種類別轉換的效能差異 using AutoMapper; using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Running; //指定要測試的class var summary = BenchmarkRunner.Run<BenchmarkSampleAuto>(); //加入記憶體使用量測試 [MemoryDiagnoser] public class BenchmarkSampleAuto { private readonly List<DbModel> _data = new List<DbModel>(); private readonly IMapper _mapper; public BenchmarkSampleAuto() { //automapper設定 var config = new MapperConfiguration(cfg => { cfg.CreateMap<DbModel, ViewModel>(); }); _mapper = new Mapper(config); //準備一份List資料 PrepareTestObjects(); } private void PrepareTestObjects() { _data.Add(new DbModel() { Id = 1, Name = "Bill", Age = 18, CreatedDate = DateTime....

September 21, 2022

dotnet6 Automapper範例

目的 快速對應,不需要寫linq來將資料庫端的model對應到view要用的model 建立新專案 選擇ASP.NET Core Web API專案範本,並執行下一步 設定新的專案 命名你的專案名稱,並選擇專案要存放的位置。 其他資訊 直接進行下一步 NuGet加入套件 透過NuGet安裝AutoMapper.Extensions.Microsoft.DependencyInjection 編輯Program.cs檔案 註冊AutoMapper //找到所有繼承profile builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); 新增Mappings資料夾與Models資料夾 在Models資料夾內加入DbModel資料夾與ViewModel資料夾 加入類別檔 在兩個資料夾內加入同名稱的類別檔案 DbModel.cs寫入程式碼 public int Id { get; set; } public string? Name { get; set; } public int Age { get; set; } public DateTime CreatedDate { get; set; } 可能會有些人問?是什麼,這是因為建立.net6專案預設會開啟判斷值可能為null的警告訊息,可以加上?代表允許此屬性為null,會建議在建構子時提供預設值,來避免嘗試對null值做處理的exception。 ViewModel.cs寫入程式 public ViewModel() { Name = string.Empty; } public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } 在建構子提供預設值後,來避免對null做處理。...

September 20, 2022

dotnet6 MailKit範例

目的 使用gmail寄信 建立新專案 選擇ASP.NET Core Web API專案範本,並執行下一步 設定新的專案 命名你的專案名稱,並選擇專案要存放的位置。 其他資訊 直接進行下一步 NuGet加入套件 Google.Apis.Auth(使用google信箱時需要做oauth驗證才可以使用) MailKit(寄信) 編輯WeatherForecastController檔案 將預設的API註解 [HttpGet("SendEmail")] public async Task<IActionResult> Get() { #region OAuth驗證 const string GMailAccount = "前置作業文章打上去的測試帳號"; var clientSecrets = new ClientSecrets { ClientId = "前置作業文章最後給的用戶ID", ClientSecret = "前置作業文章最後給的用戶端密碼" }; var codeFlow = new GoogleAuthorizationCodeFlow(new GoogleAuthorizationCodeFlow.Initializer { DataStore = new FileDataStore("CredentialCacheFolder", false), Scopes = new[] { "https://mail.google.com/" }, ClientSecrets = clientSecrets }); var codeReceiver = new LocalServerCodeReceiver(); var authCode = new AuthorizationCodeInstalledApp(codeFlow, codeReceiver); var credential = await authCode....

September 19, 2022

dotnet6 MailKit前置作業

目的 前往google帳號設定OAuth,才能使用google帳號寄信 點擊連結 到 google帳號管理 新增專案 點擊如圖按鈕建立新專案 命名你的專案名稱,並點擊建立 設定OAuth 跟著紅框處點擊到OAuth同意畫面 點擊剛剛建立的專案 選擇外部,並點擊建立 編輯應用程式註冊申請畫面 將所有必填欄位填完 第二步直接下一步 新增使用者,要建立你要使用的帳號 摘要直接下一步 憑證 點建立憑證 點擊OAuth用戶端ID 應用程式類型選擇電腦版應用程式,填入名稱後點擊建立 最後會取得用戶端ID與用戶端密碼 結論 最後就可以進行MailKit的使用了,下一篇就可以使用MailKit

September 18, 2022

dotnet6 取得appsettings檔案內容

目的 透過強行別的模式使用appsetting設定檔資料 建立新專案 選擇ASP.NET Core Web API專案範本,並執行下一步 設定新的專案 命名你的專案名稱,並選擇專案要存放的位置。 其他資訊 直接進行下一步 設定appsetting檔案 在appsetting新增一筆json資料 "PersonalInformation": { "Name": "Bill", "Age": 20 } 新增model資料夾,並在裡面新增AppsettingConfig類別檔 編輯AppsettingConfig類別檔案 public class PersonalInformation { public PersonalInformation() { Name = string.Empty; } public string Name { get; set; } public int Age { get; set; } } 編輯Program.cs檔案 在program.cs中把appsetting的來源綁定在PersonalInformation這個class上 builder.Services.Configure<PersonalInformation>( builder.Configuration.GetSection("PersonalInformation")); 注入所需要的地方 注入到預設的WeatherForecastController中,就可以使用。 private readonly PersonalInformation _options; public WeatherForecastController(ILogger<WeatherForecastController> logger, IOptionsMonitor<PersonalInformation> options) { _logger = logger; _options = options.CurrentValue; } 此範例使用的是IOptionsMonitor...

September 17, 2022