Skip to content

CloneMemberValue

Apostolis Bekiaris edited this page Aug 12, 2019 · 44 revisions

GitHub issues GitHub close issues

About

The CloneMemberValue module will help you to selectively clone Bussiness object members. The application model can be used to define the cloning context (Views/Members).

The module uses the next two strategies:

  1. It monitors the DetailView construction sequence and projects the result to a Previous/Current pair which is then used to clone if the context is valid.
  2. It monitors the sequence of new object created from the XAF ListEditor, it then projects it similarly to a Previous/Current pair.

Installation

  1. First you need the nuget package so issue this command to the VS Nuget package console

    Install-Package Xpand.XAF.Modules.CloneMemberValue.

    The above only references the dependencies and nexts steps are mandatory.

  2. Ways to Register a Module or simply add the next call to your module constructor

    RequiredModuleTypes.Add(typeof(Xpand.XAF.Modules.CloneMemberValue.CloneMemberValueModule));

The module is not integrated with any eXpandFramework module. You have to install it as described.

Versioning

The module is not bound to DevExpress versioning, which means you can use the latest version with your old DevExpress projects Read more.

The module follows the Nuget Version Basics.

Dependencies

.NetFramework:

DevExpress.ExpressApp Any
System.Reactive 4.1.6
Xpand.XAF.Modules.Reactive 1.2.46
Xpand.VersionConverter 1.0.34

Issues-Debugging-Troubleshooting

To Step in the source code you need to enable Source Server support in your Visual Studio/Tools/Options/Debugging/Enable Source Server Support. See also How to boost your DevExpress Debugging Experience.

If the package is installed in a way that you do not have access to uninstall it, then you can unload it with the next call when XafApplication.SetupComplete.

((Xpand.XAF.Modules.CloneMemberValueModule) Application.Modules.FindModule(typeof(Xpand.XAF.Modules.CloneMemberValueModule))).Unload();

Details

The module extends the IModelMember nodes with the IModelMemberCloneValue.

image

if logging is set to verbose all operations will be logged. To observe the cloning operations in code use the next pattern in one of your modules.

public override void Setup(XafApplication application){
	base.Setup(application);
	CloneMemberValueService.CloneMemberValues
		.Do(DoSomethingForEachMemberValue)
		.TakeUntilDisposingMainWindow()
		.Subscribe();
}

private void DoSomethingForEachMemberValue((IModelObjectView modelObjectView, IMemberInfo MemberInfo, IObjectSpaceLink previousObject, IObjectSpaceLink currentObject) valueTuple){
	throw new NotImplementedException();
}

Tests

The module is tested on Azure for each build with these tests

You can’t perform that action at this time.