Blogs

News

Favorite Posts

ctodx

Discussions, news and rants from the CTO of Developer Express, Julian M Bucknall

Breaking Changes for DXperience v2008 vol 3 (frameworks)

     

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.
Published Oct 30 2008, 03:00 PM by Julian Bucknall (DevExpress)
Technorati tags: Breaking changes, XAF, v2008.3
Bookmark and Share

Comments

 

Nate Laff said:

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();

  }

}

October 31, 2008 10:46 PM
 

Ron Clarke said:

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

November 3, 2008 1:40 PM
 

Roman Eremin (DevExpress) said:

Nate:

This is a correct line from the MainDemo:

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

November 4, 2008 5:47 AM

About Julian Bucknall (DevExpress)

Julian is the Chief Technology Officer at Developer Express. You can reach him directly at julianb@devexpress.com. You can also follow him on Twitter with the ID JMBucknall.
More from DevExpress
Live Chat
Have a pre-sales question?
Need assistance with your evaluation?
We are here to help.
Chat is one of the many ways you can contact members of the DevExpress Team. We are available Monday-Friday between 8:30am and 5:00pm Pacific Time.
If you need additional product information, require pre-sales assistance, or want help with your order, write to us at info@devexpress.com or call us at
+1 (818) 844-3383.