<代码>IFormattable、>IFormatProvider
和之间的区别和联系是什么? 一个简单的执行实例也非常突出。
而且,我并不真的指在网内使用网时,但当我执行这些网时,以及在这种情况下,哪几类人通常会执行什么接口,以及如何适当做到这一点。
<代码>IFormattable、>IFormatProvider
和之间的区别和联系是什么? 一个简单的执行实例也非常突出。
而且,我并不真的指在网内使用网时,但当我执行这些网时,以及在这种情况下,哪几类人通常会执行什么接口,以及如何适当做到这一点。
<代码>IFormattable是支持<编码>格式的物体。 Format, i.e., the xxx
in 0:xxx}
. <编码>载体。 格式代码>将交给物体<代码>。 如果物体支持接口,则采用方法。
<代码>IFormatProvider是构成信息的来源,用于文化特定日期和货币布局等事项。
然而,就如<代码>Datetime等情况而言,如果你希望格式已经实施IFormattable<>code>,但你不控制实施情况(
。 相反,请你执行<条码>t/IFormatProvider,并在要求实施<条码>时,交还。 <编码>载体。 格式编码>核对供应商在参加标语<代码>的表格/编码。 格式代码>,这反过来又可能请<编码>IFormatProvider提供特定文化数据,如<代码>CultureInfo。Datetime
在《巴塞尔公约》中提供,你可以轻易取代这一条),则有一个防止<编码>编码的机制。 格式代码>,仅使用<代码>IFormattable。 ToString
这是一项显示<代码>内容的方案。 格式/编码 要求
using System;
using System.Globalization;
class MyCustomObject : IFormattable
{
public string ToString(string format, IFormatProvider provider)
{
Console.WriteLine("ToString("{0}", provider) called", format);
return "arbitrary value";
}
}
class MyFormatProvider : IFormatProvider
{
public object GetFormat(Type formatType)
{
Console.WriteLine("Asked for {0}", formatType);
return CultureInfo.CurrentCulture.GetFormat(formatType);
}
}
class App
{
static void Main()
{
Console.WriteLine(
string.Format(new MyFormatProvider(), "{0:foobar}",
new MyCustomObject()));
}
}
它印刷如下:
Asked for System.ICustomFormatter
ToString("foobar", provider) called
arbitrary value
如果格式提供商改换成一种定制格式,则转而:
class MyFormatProvider : IFormatProvider
{
public object GetFormat(Type formatType)
{
Console.WriteLine("Asked for {0}", formatType);
if (formatType == typeof(ICustomFormatter))
return new MyCustomFormatter();
return CultureInfo.CurrentCulture.GetFormat(formatType);
}
}
class MyCustomFormatter : ICustomFormatter
{
public string Format(string format, object arg, IFormatProvider provider)
{
return string.Format("(format was "{0}")", format);
}
}
运行:
Asked for System.ICustomFormatter
(format was "foobar")
定制格式的工作基于三个组成部分之间的协调:
formattable Object are cases that can use a form Providers as well with a Formatstring to Format their data by implementing 表格代码>接口。 基本上,它们将要求格式提供商获得<代码>formatter
,然后使用作为格式指示的格式,请<代码>formatter<<>>>>>格式。 日期/时间和数字类型是表格类型的例子。
<>标准提供商是实施<条码>的班级。 他们负责根据打电话者要求的格式类型归还<代码>formatter的物体。 格式类型可以是格式提供商可以理解的哪类,而填回的<代码>formatter则应是用户(表格“多数情况下的标的”)可用于格式其数据。
<>formatters是负责提供格式化服务的物体。 在日期/时间及数字类型方面,格式提供商也为<代码>formatters。 www.un.org/chinese/ga/president
在通过诸如<代码>String.Format、Console.WriteLine
或等一些方法实施的综合格式格式中,当一个格式提供人通过时,他们总是要求提供实施
界面的<代码>格式>。 这使得开发商能够提供这些方法的各种定制格式。
>IFormattable
是支持不同形式(例如,编号和编号)的物体。 通过使用接口,守则的多部分可使用价值和格式说明,这在数据约束和<编码>中是常见的(例如)。 格式代码>。
http://msdn.microsoft.com/en-us/library/system.iformatprovider.aspx” rel=“nofollow noretinger”>IFormatProvider
填充了处理格式的某些空白,特别是I18n。 最常见的是,使用<条码>CultureInfo作为提供方,或者提供具体的当地格式,或采用不变的文化。
就我所知,ICustomFormatter
与外界无关,与序列化的联系更多(BinaryFormatter
)。 我会错......
缩略语
IFormattable d = 123.45M;
string s1 = d.ToString("c", CultureInfo.CurrentCulture), // local currency
s2 = d.ToString("c", CultureInfo.InvariantCulture); // invariant currency
What is the use of default keyword in C#? Is it introduced in C# 3.0 ?
I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...
I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...
I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...
I have two EF entities. One has a property called HouseNumber. The other has two properties, one called StartHouseNumber and one called EndHouseNumber. I want to create a many to many association ...
How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...
Since I cannot order my dictionary, what is the best way of going about taking key value pairs and also maintaing an index?
Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...