Back to Devexpress

DXWIN0002: Redundant RepositoryItem Initialization

windowsforms-403881-build-an-application-security-considerations-code-diagnostics-win-002-message.md

latest1.6 KB
Original Source

DXWIN0002: Redundant RepositoryItem Initialization

  • May 06, 2022

Severity: Error

Avoid intializing new instances of repository items (RepositoryItem class descendants) inside frequently fired events. In certain cases, the Garbage Collector cannot collect such items.

Instead, use a variable to initialize required repository items outside event handlers.

Example 1

Invalid Code

csharp
private void GridView1_CustomRowCellEdit(object sender, CustomRowCellEditEventArgs e) {
   RepositoryItemTextEdit edit = new RepositoryItemTextEdit(); 
   edit.EditValueChanged += Edit_EditValueChanged; 
   e.RepositoryItem = edit; 
}

Valid Code

csharp
// Store edit in a variable
RepositoryItemTextEdit edit = new RepositoryItemTextEdit();
edit.EditValueChanged += Edit_EditValueChanged;

private void GridView1_CustomRowCellEdit(object sender, CustomRowCellEditEventArgs e) {
    e.RepositoryItem = edit; 
}

Example 2

Invalid Code

csharp
private void GridView1_CustomRowCellEditForEditing(object sender, CustomRowCellEditEventArgs e) {
    RepositoryItemTextEdit edit = new RepositoryItemTextEdit(); 
    edit.EditValueChanged += Edit_EditValueChanged; 
    e.RepositoryItem = edit;
}

Valid Code

csharp
// Store edit in a variable
RepositoryItemTextEdit edit = new RepositoryItemTextEdit();
edit.EditValueChanged += Edit_EditValueChanged;

private void GridView1_CustomRowCellEditForEditing(object sender, CustomRowCellEditEventArgs e) { 
    e.RepositoryItem = edit; 
}