Tag: 可维护性

Cru代码。 IoC来救援

关于IoC Container的实用性问题 ,获奖提交者提到,使用IoC容器,您可以采取以下措施: public class UglyCustomer : INotifyPropertyChanged { private string _firstName; public string FirstName { get { return _firstName; } set { string oldValue = _firstName; _firstName = value; if(oldValue != value) OnPropertyChanged(“FirstName”); } } private string _lastName; public string LastName { get { return _lastName; } set { string oldValue = value; _lastName […]

如何在C#和C ++代码之间共享常量?

我正在编写两个进程,一个使用C#和WCF,另一个使用C ++和WWSAPI。 我希望能够在一个地方定义用于两者之间通信的地址,并让C#和C ++都使用它。 这可能吗? 我最接近的是在IDL中定义常量,然后使用MIDL和TLBIMP将其转换为可由C#使用的DLL。 然而,这似乎没有暴露常数,或者至少我无法弄清楚如何使它这样做。 也许它仅限于类型定义。 还有其他建议吗?

在C#中简化覆盖等于(),GetHashCode()以获得更好的可维护性

我经常发现我的自我重写Equals()和GetHashCode()来实现具有相同属性值的业务对象相等的语义。 这会导致代码重复写入并且易于维护(属性被添加,并且一个/两个覆盖都不会更新)。 代码最终看起来像这样(欢迎对实现的评论): public override bool Equals(object obj) { if (object.ReferenceEquals(this, obj)) return true; MyDerived other = obj as MyDerived; if (other == null) return false; bool baseEquals = base.Equals((MyBase)other); return (baseEquals && this.MyIntProp == other.MyIntProp && this.MyStringProp == other.MyStringProp && this.MyCollectionProp.IsEquivalentTo(other.MyCollectionProp) && // See http://stackoverflow.com/a/9658866/141172 this.MyContainedClass.Equals(other.MyContainedClass)); } public override int GetHashCode() { int hashOfMyCollectionProp […]