Classes and interfaces

In this section, each class and interface of the concept will be explained in details.

Kipon.Xrm.Actions.AbstractActionRequest

AbstractActionRequest is the base class for implementations of generated input parameters for an action.

This class is only used indirectly, and all implementations are typically generated with the Kipon.Solid.Plugin svcutil extensions.

Whenever you registre an action in the filter.xml to be generated, this will generate an input interface, that correspond to the input parameters of the action. Beside the interface, representing the input parameters, it will also generate an implementation of that interface, used by the Kipon Plugin to create and parse an actual instance of the interface to the plugin method registred.


namespace Kipon.PluginExample.Plugins
{
    public class AccountCountContactsPlugin : Kipon.Xrm.BasePlugin
    {
        public Actions.AccountCountContactsResponse 
            OnPostkipon_AccountCountContacts(Actions.IAccountCountContactsRequest request)
        {
            return new Actions.AccountCountContactsResponse 
            { 
                Count = 10, 
                AMoney = new Microsoft.Xrm.Sdk.Money(500M) 
            };
        }
    }
}

Above plugin example is listen for post event on the kipon_AccountCountContacts action, and is taken Actions.IAccountCountContactsRequest as input parameter. The later is an interface generated by the kipon.solid.plugin crmsvcutil extension. The implementation of this interface is also generated by the tool, and that implementation is extending the AbstractActionRequest.

Understanding the nature of this class is fine, but in your code you will never use it directly. All the wiring is done by the framework, and in you unit test you can implement the Actions.IAccountCountContactsRequest interface anyway suitable for you test.

© Kipon ApS 2020, 2021, 2022, 2023, 2024. All content on the page is the property of Kipon ApS. Any republish or copy of this content is a violation. The content of this site is NOT open source, and cannot be copied, republished or used in any context without explcit permission from the owner.