//构造函数私有化保证只能由类的静态方法实例化.当然,如果为public也是可以的,这里做只是为了统一构造入口, //便于管理和维护。 private MyDependencyProperty(string name, Type propertyType, Type ownerType, MyPropertyMetadata propertyMetadata) { _propertyType = propertyType; _ownerType = ownerType; _name = name; _propertyMetadata = propertyMetadata; }
//依赖属性实例化工厂方法类. public static MyDependencyProperty Register(string name, Type propertyType, Type ownerType, MyPropertyMetadata propertyMetadata) { if (propertyMetadata != null && propertyMetadata.DefaultValue.GetType() != propertyType) { throw new Exception(string.Format("the type of defaultValue is not {0}", propertyType.Name)); } MyDependencyProperty dp = new MyDependencyProperty(name, propertyType, ownerType, propertyMetadata); return(dp); }