Breaking Changes for DXperience v2008 vol 3 (frameworks)

30 October 2008

This is the third part of the Breaking Changes list for v2008 vol 3, covering changes to XAF (eXpress App Framework).

This list is not the What's New list for v2008 vol 3, but merely the changes we've had to make to DXperience in order to fix bugs, add new functionality, or improve the user experience. If you already have projects using DXperience, you will need to peruse this list in order to understand the changes you might need to make to your source code to support this new major release.

Note that we only publish the changes to the public interface of our controls. We reserve the right to change the protected, internal, or private interfaces when needed.

eXpressApp Framework

  • Many classes and interfaces have been replaced with interfaces from the new TypesInfo system.
    The following classes and interfaces will no longer be used from XAF v2008 vol 3 onwards:
    ComplexMemberDescriptor
    ComplexPropertyDescriptor
    DescriptorFactory
    FieldInfoWrapper
    IMemberInfoWrapper
    PropertyDescriptorWrapper
    PropertyInfoWrapper
    ReflectionMemberInfoWrapper
    XpoDescriptorFactory
    XpoMemberInfoWrapper (The IAssemblyInfo, ITypesInfo, ITypeInfo and IMemberInfo interfaces should be used instead.)
  • The CollectionSourceBase.IsObjectFitForCollection method now returns a nullable bool instead of the standard bool.
  • Rules applied to non-public properties are not supported anymore.
    If you need to apply a rule to a property that should not be visible in a UI, apply the [Browsable(false)] attribute to the property instead of making it private or protected. For example:

    [Browsable(false)]
    [RuleFromBoolProperty(....)]
    public bool IsValid {
      get { ... }
    }
  • Several members of the DevExpress.ExpressApp.Validation.ValidationExceptionId enumeration have been renamed. The corresponding resource strings were renamed as well.
    - DeleteErrorMessageHeaderFormat was renamed to DeleteErrorMessageHeader;
    - SaveErrorMessageHeaderFormat was renamed to SaveErrorMessageHeader.
  • The DevExpress.ExpressApp.Validation.Serialization.IRuleSerializerOnDictionaryNode interface has been changed.
    There are two new methods:
    - bool IsRuleSupported(Type ruleType)
    - bool IsRuleSupported(DictionaryNode ruleNode)
  • The IAnalysisInfo interface has been changed.
    The DimensionProperties property now has the IList<string> type.
  • The PropertyEditor.MemberDescriptor property now returns an object of the IMemberInfo type.

  • The size of the DevExpress.Persistent.BaseImpl.Analysis business class' Criteria property has been changed.
    The Criteria property of the DevExpress.Persistent.BaseImpl.Analysis business class has been enlarged. It now has an unlimited size, since it became necessary to save large criteria. If you use this class in your application, you should update your database. To learn how to do this, see the UpdateAnalysisCriteriaColumn method in the MainDemo.Module.Updater class.

  • The XafApplication.CreatePropertyCollectionSource method has been changed.
    Its MemberDescriptor parameter is now of type IMemberInfo.

  • The XafApplication.CustomizeCulture and XafApplication.CustomiseFormattingCulture events have been removed.
    These events were obsolete. The CustomizeLanguage and CustomizeFormattingCulture events are now used instead.

  • XAF attributes should be added via XafTypeInfo, and not via XPDictionary.
    For instance, in previous XAF versions, the CreatableItemAttribute attribute was added in the following way:
    xpDictionary.QueryClassInfo(typeof(Person)).AddAttribute(new CreatableItemAttribute(false));
    It must now be added in the following manner:
    XafTypesInfo.Instance.FindTypeInfo(typeof(Person)).AddAttribute(new CreatableItemAttribute(false));

Breaking Changes part 1 covering charts, reports, gauges.
Breaking Changes part 2 covering scheduling.
Breaking Changes part 4 covering miscellaneous changes.
3 comment(s)
Nate Laff

Second time your own example has been broken. From the XAF documentation. What is the replacement type for XpoTypesInfoAdapter?

using DevExpress.ExpressApp.Reports;

using DevExpress.ExpressApp;

//...

private void CreateReport(string reportName) {

  ReportData reportdata = Session.FindObject<ReportData>(new BinaryOperator("Name", reportName));

  if (reportdata == null) {

     reportdata = new ReportData(Session);

     XafReport rep = new XafReport();

     rep.ReportName = reportName;

     rep.ObjectSpace = new ObjectSpace(new UnitOfWork(Session.DataLayer),

        new XpoTypesInfoAdapter(Session.DataLayer.Dictionary));

     rep.LoadLayout(GetType().Assembly.GetManifestResourceStream(

        "MySolution.Module.EmbeddedReports." + reportName + ".repx"));

     reportdata.SaveXtraReport(rep);

     reportdata.Save();

  }

}

31 October, 2008
Ron Clarke

So, is this the release that will support an ORM like Ideablade or is it still dependent on XPO

3 November, 2008
Roman Eremin (DevExpress)

Nate:

This is a correct line from the MainDemo:

rep.ObjectSpace = new ObjectSpace(new UnitOfWork(Session.DataLayer), XafTypesInfo.Instance);

4 November, 2008

Please login or register to post comments.