Tag: design

使用ninject的WinForms对话框的最佳实践是什么?

我尝试用Ninject创建应用程序。 我有一个MainForm和对话框表单进行设置。 我应该如何实现这个? MainForm应该有一个Kernel实例,然后使用Get()方法创建SettingsForm吗? 或者MainForm构造函数应该具有SettingsForm实例的参数? 我尝试用ninject找到一些WinForm应用程序的例子,但我发现只有一些ASP.NET应用程序在Visual C#2008 express中没用。

设计没有默认构造函数

我想使用默认构造函数限制创建对象。 因为我有如下设计: class Program { static void Main(string[] args) { BaseClass bc = new BaseClass(“”,””); XmlSerializer xml = new XmlSerializer(typeof(BaseClass)); StreamWriter sw = new StreamWriter(File.Create(“c:\\test.txt”)); xml.Serialize(sw,bc); sw.Flush(); sw.Close(); } } [Serializable] public class BaseClass { public string UserName, Password; // I don’t want to create default constructor because of Authentication public BaseClass(string _UserName, string _Password) […]

什么时候应该写静态方法?

所以我理解静态方法或字段是什么,我只是想知道何时使用它们。 也就是说,在编写代码时,设计适合使用静态方法和字段。 一种常见的模式是使用静态方法作为静态工厂,但这可以通过重载构造函数来轻松完成。 正确? 例如: var bmp = System.Drawing.Bitmap.LoadFromFile(“Image01.jpg”); 至于静态场,是否最好使用singelton-objects?

为什么IsNan是Double类的静态方法而不是实例属性?

问题在标题中,为什么: return double.IsNaN(0.6d) && double.IsNaN(x); 代替 return (0.6d).IsNaN && x.IsNaN; 我问,因为当实现具有与NaN相同含义的特殊值的自定义结构时,我倾向于选择第二个。 此外,该属性的性能通常更好,因为它避免复制堆栈上的结构以调用IsNaN静态方法(并且因为我的属性不是虚拟的,所以没有自动装箱的风险)。 当然,对于内置类型来说这不是一个真正的问题,因为JIT可以很容易地优化它。 我现在最好的猜测是,因为你不能在double类中同时拥有属性和静态方法,所以他们更喜欢java启发的语法。 (实际上你可以同时定义一个get_IsNaN属性getter,另一个定义一个IsNaN静态方法,但它会混淆任何支持属性语法的.Net语言)

抽象基类强制每个派生类为Singleton

如何创建一个抽象类来强制每个派生类为Singleton? 我用C#。