This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
dev:csharp [2023/03/23 15:09] – created adam | dev:csharp [2024/12/08 03:53] (current) – [entityframework (my beloved)] adam | ||
---|---|---|---|
Line 15: | Line 15: | ||
</ | </ | ||
- | so you make an abstract class `MyAbstractClass` and derive from it. | + | so you make an abstract class '' |
Line 62: | Line 62: | ||
observe - I write a text string in a config file to describ ea type, and now I can pick what object to instantiate :))) | observe - I write a text string in a config file to describ ea type, and now I can pick what object to instantiate :))) | ||
+ | |||
+ | ======= nuget on non-windows ======= | ||
+ | |||
+ | this comes up a lot. | ||
+ | |||
+ | > it's easy just install it via nuget with < | ||
+ | |||
+ | - normal devs | ||
+ | |||
+ | for some reason, it works differently when you're not on windows. what we do: | ||
+ | |||
+ | < | ||
+ | |||
+ | why is not '' | ||
+ | |||
+ | ======= entityframework (my beloved) ======= | ||
+ | |||
+ | install in your dev env: | ||
+ | |||
+ | dotnet tool install --global dotnet-ef | ||
+ | |||
+ | install packages: | ||
+ | * Microsoft.EntityFrameworkCore.Design | ||
+ | * Npgsql.EntityFrameworkCore.PostgreSQL (or whatever you like) | ||
+ | |||
+ | dotnet-ef dbcontext scaffold " | ||
+ | |||
+ | |||
+ | migrations: | ||
+ | dotnet ef migrations add "name of migration" | ||
+ | dotnet ef database update --connection " | ||
+ | |||
+ | ======= enum names ======= | ||
+ | |||
+ | forget " | ||
+ | |||
+ | make yourself this function: | ||
+ | <code csharp> | ||
+ | public static string GetDescription< | ||
+ | where T : struct | ||
+ | { | ||
+ | Type type = enumerationValue.GetType(); | ||
+ | if (!type.IsEnum) | ||
+ | { | ||
+ | throw new ArgumentException(" | ||
+ | } | ||
+ | |||
+ | //Tries to find a DescriptionAttribute for a potential friendly name | ||
+ | //for the enum | ||
+ | MemberInfo[] memberInfo = type.GetMember(enumerationValue.ToString()); | ||
+ | if (memberInfo != null && memberInfo.Length > 0) | ||
+ | { | ||
+ | object[] attrs = memberInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), | ||
+ | |||
+ | if (attrs != null && attrs.Length > 0) | ||
+ | { | ||
+ | //Pull out the description value | ||
+ | return ((DescriptionAttribute)attrs[0]).Description; | ||
+ | } | ||
+ | } | ||
+ | //If we have no description attribute, just return the ToString of the enum | ||
+ | return enumerationValue.ToString(); | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | and then all you have to do is use '' | ||
+ | <code csharp> | ||
+ | private enum PublishStatusValue | ||
+ | { | ||
+ | [Description(" | ||
+ | NotCompleted, | ||
+ | Completed, | ||
+ | Error | ||
+ | }; | ||
+ | </ | ||
+ | |||
+ | ======= what is the actual publish command ======= | ||
+ | |||
+ | specify output folder. I don't know what all the other bullshit it insists on dumping in the folder is. | ||
+ | |||
+ | < | ||
+ | dotnet publish -c Release -o ../publish | ||
+ | </ | ||
+ | |||
+ | also you can't not get '' | ||
+ | ======= why is asp.net not accepting my frombody thing? ======= | ||
+ | |||
+ | microsoft replaced the working json parser with one that doesn' | ||
+ | |||
+ | fix: | ||
+ | - '' | ||
+ | - go find where services are being added; '' | ||
+ | |||
+ | ======= which is a field, which is a property? ======= | ||
+ | |||
+ | <code csharp> | ||
+ | public class MyClass | ||
+ | { | ||
+ | // this is a field. | ||
+ | private string _myField; | ||
+ | |||
+ | // this is a property. When accessed it uses the underlying field, | ||
+ | // but only exposes the contract, which will not be affected by the underlying field | ||
+ | public string MyProperty | ||
+ | { | ||
+ | get | ||
+ | { | ||
+ | return _myField; | ||
+ | } | ||
+ | set | ||
+ | { | ||
+ | _myField = value; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | // This is an AutoProperty (C# 3.0 and higher) - which is a shorthand syntax | ||
+ | // used to generate a private field for you | ||
+ | public int AnotherProperty { get; set; } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | src: https:// |