Tag: 类型安全

设计多类型对象的最佳方法

假设我有一个数据对象,但是这个对象可以包含几种类型的数据之一。 class Foo { int intFoo; double doubleFoo; string stringFoo; } 现在,我想创建一个访问器。 获取此数据的一些方法。 显然,我可以创建多个访问者: public int GetIntFoo(); public double GetDoubleFoo(); public string GetStringFoo(); 或者我可以创建多个属性 public int IntFoo { get; set; } public double DoubleFoo { get; set; } public string StringFoo { get; set; } 我不认为这是一个非常好的设计。 它要求客户端代码更关心类型而不是它本来应该的。 更重要的是,我真的只需要这个类的单个值,上面的内容将允许同时分配每种类型中的一个。 不好。 一种选择是使用generics。 class Foo { public T […]

这个模式有名字吗? (C#编译时类型安全与“params”不同类型的args)

这个模式有名字吗? 假设您要创建一个方法,该方法接受可变数量的参数,每个参数必须是一组固定类型(以任何顺序或组合),以及您无法控制的某些类型。 一种常见的方法是让您的方法接受Object类型的参数,并在运行时validation类型: void MyMethod (params object[] args) { foreach (object arg in args) { if (arg is SomeType) DoSomethingWith((SomeType) arg); else if (arg is SomeOtherType) DoSomethingElseWith((SomeOtherType) arg); // … etc. else throw new Exception(“bogus arg”); } } 但是,让我们说,像我一样,你痴迷于编译时类型的安全性,并希望能够在编译时validation你的方法的参数类型。 这是我想出的一种方法: void MyMethod (params MyArg[] args) { // … etc. } struct MyArg { public readonly […]