3c1f479b9d
Former-commit-id: 806294f5ded97629b74c85c09952f2a74fe182d9
59 lines
957 B
C#
59 lines
957 B
C#
using System;
|
|
using System.Linq.Expressions;
|
|
|
|
namespace System
|
|
{
|
|
public class FormattableString
|
|
{
|
|
public FormattableString (string str, object[] arguments)
|
|
{
|
|
Value = str;
|
|
Arguments = arguments;
|
|
}
|
|
|
|
public string Value { get; set; }
|
|
public object[] Arguments;
|
|
}
|
|
}
|
|
|
|
namespace System.Runtime.CompilerServices
|
|
{
|
|
public static class FormattableStringFactory
|
|
{
|
|
public static object Create(string format, params object[] arguments)
|
|
{
|
|
if (format.StartsWith ("format"))
|
|
return new MyFormattable ();
|
|
|
|
return new FormattableString (format, arguments);
|
|
}
|
|
}
|
|
}
|
|
|
|
class MyFormattable : IFormattable
|
|
{
|
|
string IFormattable.ToString (string str, IFormatProvider provider)
|
|
{
|
|
return null;
|
|
}
|
|
}
|
|
|
|
class ConversionTest
|
|
{
|
|
static int Main ()
|
|
{
|
|
byte b = 3;
|
|
|
|
FormattableString c1;
|
|
c1 = $"{b}";
|
|
if (c1.Value != "{0}")
|
|
return 1;
|
|
|
|
IFormattable c2;
|
|
c2 = $"format { b }";
|
|
if (!(c2 is MyFormattable))
|
|
return 2;
|
|
|
|
return 0;
|
|
}
|
|
} |