Skip to content

Instantly share code, notes, and snippets.

@ashmind
ashmind / run-cli.csproj
Last active October 13, 2021 16:24
Arbitrary scripts with dotnet run
<Project>
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<OutputType>Exe</OutputType>
<OutDir>build/bin</OutDir>
<BaseIntermediateOutputPath>build/obj</BaseIntermediateOutputPath>
</PropertyGroup>
<Target Name="PrepareProgram" BeforeTargets="BeforeBuild">
<PropertyGroup>
@ashmind
ashmind / OwinWebSocket.cs
Created September 14, 2016 09:31
(Very flawed) Implementation of System.Net.WebSockets.WebSocket over Owin async func spec
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Net.WebSockets;
using System.Threading;
// This is bad and potentially unreliable code, which only serves as a base for
// further improvements. Please do not use it as is.
namespace MirrorSharp.Owin.Internal {
public static class AutofacCompositeExtensions {
public static IRegistrationBuilder<TImplementer, ConcreteReflectionActivatorData, SingleRegistrationStyle> RegisterComposite<TImplementer>(this ContainerBuilder builder) {
var registrationBuilder = RegistrationBuilder.ForType<TImplementer>();
builder.RegisterCallback(registry => {
registrationBuilder.OnPreparing(e => {
foreach (var service in e.Component.Services.OfType<IServiceWithType>()) {
e.Parameters = e.Parameters.Concat(new[] {
new ResolvedParameter(
(p, _) => IsCollectionOf(p.ParameterType, service),
(_, c) => ResolveCollection(c, service, e.Component)
Set-StrictMode -Version 2
$ErrorActionPreference = 'Stop'
function Write-ColorOutput([Parameter(Mandatory=$true)] $inputObject, [System.ConsoleColor] $foregroundColor) {
$rawUI = $Host.UI.RawUI
$saved = $rawUI.ForegroundColor
try {
$rawUI.ForegroundColor = $foregroundColor
Write-Output $inputObject
}
Diff:
C:\Program Files\Perforce\p4merge.exe -nl %bname -nr %yname %base %mine

Merge:
C:\Program Files\Perforce\p4merge.exe -nb %bname -nl %tname -nr %yname -nm %mname %base %theirs %mine %merged

String interpolation

var x = 1;

// same as string.Format("A {0} B", x) 
var y1 = $"A {x} B"; // y == "A 1 B"

// $@ for multiline
var y2 = $@"A
using System;
namespace SomeUnit {
public class AssertHelper {
public static AssertHelper Assert { get; } = new AssertHelper();
}
}
namespace SomeUnit.Extensions {
public static class AssertExtensions {
@ashmind
ashmind / ContractResolverWithPatchSupport.cs
Last active August 29, 2015 14:14
WebApi Patch<T> Design (at the moment needs AshMind.Extensions and InfoOf from NuGet)
using System;
using System.Collections.Generic;
using System.Linq;
using AshMind.Extensions;
using Newtonsoft.Json.Serialization;
namespace PatchDesignDemo {
public class ContractResolverWithPatchSupport : DefaultContractResolver {
private readonly IContractResolver _inner;
public class Node {}
public class NodeA : Node {}
public class NodeB : Node {}
public class NodeBProcessor : Processor<NodeB> {
}
public class ProcessingDispatcher {
public void Dispatch(Node node) {
var processor = FindBestProcessorFor(node);
@ashmind
ashmind / NuGet_profile.ps1
Last active September 29, 2018 00:24
Save to your NuGet Profile
# For each package, lists which projects it is installed in
function Write-PackageProjectInstalls([string] $PackageFilter = '') {
Set-StrictMode -Version 2
$ErrorActionPreference = 'Stop'
Get-Project -All |
% {
$ProjectName = $_.ProjectName
Get-Package $PackageFilter -Project $ProjectName |
% { New-Object PSObject -Prop (@{ ProjectName=$ProjectName; PackageId=$_.Id; Version = $_.Version; }) }