Tag: typeconverter

DateTime TypeConverter

我有下面的代码将字符串转换为类型T.它适用于所有其他类型,但是当T是DateTime类型时给出错误。 TypeConverter c = TypeDescriptor.GetConverter( typeof (T) ); return (T) c.ConvertTo( obj, typeof (T) ) 我传了一个字符串 obj = “09/09/2009” 它抛出一个错误{“’DateTimeConverter’无法将’System.String’转换为’System.DateTime’。”}

在运行时将EnConverter属性添加到枚举

在C#/ WPF应用程序中,我为一些枚举添加了TypeConverter属性,以便显示本地化文本而不是枚举文本: [TypeConverter(typeof(LocalizedEnumTypeConverter))] public enum MyEnum { EnumVal1 = 0, EnumVal2 = 1, EnumVal3 = 2, } 我已经实现了LocalizedEnumTypeConverter来执行此任务。 当我尝试使用与另一个程序集中定义的枚举相同的方法时出现问题,该枚举无法访问LocalizedEnumTypeConverter,并且与其他应用程序共享(也就是说,我无法添加对LocalizedEnumTypeConverter所在的程序集的引用)定义)。 有没有办法在运行时添加TypeConverter属性? 这样我可以在没有TypeConverter属性的情况下将枚举保留在其他程序集中,然后在我的应用程序中将其添加到运行时。

将64位数组转换为Int64或ulong C#

我有一个int数组(长度总是64),如: 1110000100000110111001000001110010011000110011111100001011100100 我想在一个Int64 (或ulong?)变量中写它。 怎么做? 我尝试创建一个BitArray然后获取int ,但它在CopyTo行上抛出System.ArgumentException : private static Int64 GetIntFromBitArray(BitArray bitArray) { var array = new Int64[1]; bitArray.CopyTo(array, 0); return array[0]; }

从字符串转换为system.drawing.point c#

我想转换由Point.ToString();生成的字符串{X=-24,Y=10} Point.ToString(); 重新点? 我在保存模式下将字符串值保存在xml文件中,我希望在读取模式下再次将其读回。

使用JSON.NET与ExpandableObjectConverter的问题

我定义了以下类: Public Class Vector3 Public Property X As Double Public Property Y As Double Public Property Z As Double Public Overrides Function ToString() As String Return String.Format(“({0}, {1}, {2})”, Format(X, “0.00”), Format(Y, “0.00”), Format(Z, “0.00”)) End Function End Class 使用DataContractJsonSerializer我按预期收到以下JSON: { “Vector”: { “X”: 1.23, “Y”: 4.56, “Z”: 7.89 } } 但是,JSON.NET产生: { “Vector”: “(1.23, […]

无法为generics类型创建TypeConverter

我想为generics类创建一个TypeConverter ,如下所示: [TypeConverter(typeof(WrapperConverter))] public class Wrapper { public T Value { // get & set } // other methods } public class WrapperConverter : TypeConverter { // only support To and From strings public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) { if (sourceType == typeof(string)) { return true; } return base.CanConvertFrom(context, sourceType); } public override […]

AutoMapper TypeConverter将可空类型映射为不可空类型

我正在使用AutoMapper,并且我已经注册了一个TypeConverter来将可以为空的长值映射到长值,如下所示: public class NullableLongToLongConverter : TypeConverter { protected override long ConvertCore(long? source) { return source ?? 0; } } 这样可以正常工作,并自动获取任何可转换为longs的可空长度。 但是,我有一些其他地图想要将可空的长片“转换”为可空的长片。 这些也最终使用这种类型的转换器。 例如,在下面的代码中,两个属性都设置为0,但我希望NullableLong设置为null。 难道我做错了什么? public class Foo { public long? NullableLong{get {return null;}} …… } public class Bar { public long NotNullableLong{get;set;} public long? NullableLong{get;set;} …… } public static class ComplicatedMapRegister { public static void […]

C#:如何使用Type Converter来本地化枚举

我正在尝试了解如何在阅读我的其他问题的答案后使用类型转换器。 但我不确定我是否完全明白了…… 在我的特定情况下,我想通过获取资源字符串来将枚举成员“转换”为本地化字符串,具体取决于它是什么枚举成员。 例如,如果我有这个枚举: public enum Severity { Critical, High, Medium, Low } 或这个: public enum Color { Black = 0x0, Red = 0x1, Green = 0x2, Blue = 0x4, Cyan = Green | Blue, Magenta = Red | Blue, Yellow = Red | Green, White = Red | Green | Blue, } 如何创建可以将这些成员转换为本地化字符串的类型转换器? 我将如何使用它? […]

如何将自定义类型数据绑定到TextBox.Text?

我有一个自定义的c#类型(只是一个例子): public class MyVector { public double X {get; set;} public double Y {get; set;} public double Z {get; set;} //… } 我想将它数据绑定到TextBox.Text: TextBox textBox; public MyVector MyVectorProperty { get; set;} //… textBox.DataBindings.Add(“Text”, this, “MyVectorProperty”); 基本上我需要转换为自定义值类型的字符串。 在文本框中,我想要“x,y,z”之类的东西,可以编辑它来更新矢量类型。 我假设我可以通过添加TypeConverter派生类来实现: public class MyVectorConverter : TypeConverter { public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) { if (sourceType == […]

为什么这个TypeConverter不工作?

我试图理解为什么下面的代码没有按预期工作; TypeDescriptor根本就没有从属性中获取自定义转换器。 我只能假设我犯了一个明显的错误,但我看不到它。 – 编辑 – 这个代码似乎在我自己在控制台中运行时起作用,我实际上是从更复杂的应用程序和不同的命名空间中调用转换器。 – 编辑 – 或者有关如何调试TypeDescriptor的任何建议,以便我可以看到发生了什么,然后我可以自己回答这个问题。 – 编辑 – 这个问题几乎肯定与不同组件中的碎片有关。 – 编辑 – 由于动态加载程序集的一些怪癖,看起来这样做不起作用 – 这个代码在类似架构的插件下运行。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Drawing; using System.ComponentModel; namespace MyTest { public class TestTester { public static void Main(string[] args) { object v = TypeDescriptor.GetConverter(typeof(MyTest.Test)).ConvertFromInvariantString(“Test”); } } public class TestConverter […]