Skip to content

Instantly share code, notes, and snippets.

@dgg
Created January 3, 2018 15:05
Show Gist options
  • Save dgg/e00e1bd8f501685ac2de64f10c144a84 to your computer and use it in GitHub Desktop.
Save dgg/e00e1bd8f501685ac2de64f10c144a84 to your computer and use it in GitHub Desktop.
Anatomy-of-a-Breaking-Change
using System;
using BreakingChangeAnatomy.Library;
using BreakingChangeAnatomy.Library.ChildNs;
namespace BreakingChangeAnatomy.Client
{
class Program
{
static void Main(string[] args)
{
var o = new TheType { TheProperty = 42m };
var result = o.TheMethod(new TheArgument { Postfix = "!" });
Console.WriteLine(result.Something);
Console.ReadLine();
}
}
}
using BreakingChangeAnatomy.Library.ChildNs;
namespace BreakingChangeAnatomy.Library
{
public class TheType
{
public decimal TheProperty { get; set; }
public TheReturn TheMethod(TheArgument argument)
{
// pretend doing something
var result = new TheReturn
{
Something = $"{TheProperty} {argument.Postfix}"
};
return result;
}
}
}
├───Library
│ TheType.cs
└───ChildNs
TheArgument.cs
TheReturn.cs
using BreakingChangeAnatomy.Library.ChildNs;
namespace BreakingChangeAnatomy.Library
{
public class TheType
{
public decimal TheProperty { get; set; }
public TheReturn TheMethod(TheArgument argument)
{
// pretend doing something
var result = new TheReturn
{
// compatible change
Something = $"{TheProperty}{argument.Postfix}"
};
return result;
}
}
}
namespace BreakingChangeAnatomy.Library
{
public class TheType
{
public decimal TheProperty { get; set; }
}
}
namespace BreakingChangeAnatomy.Library.ChildNs
{
public static class Operation
{
public static TheReturn TheMethod(this TheType o, TheArgument argument)
{
// fake doing something
var result = new TheReturn
{
Something = $"{o.TheProperty}{argument.Postfix}"
};
return result;
}
}
}
├───Library
│ TheType.cs
└───ChildNs
Operation.cs
TheArgument.cs
TheReturn.cs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment