About "protected virtual void DataPortal_Fetch(object criteria)" in ReadOnlyListBase

About "protected virtual void DataPortal_Fetch(object criteria)" in ReadOnlyListBase

Old forum URL: forums.lhotka.net/forums/t/11356.aspx


foxhard posted on Sunday, May 13, 2012

Hi,

I have see several examples of implementation of ReadOnlyList classes. But the fetch method is like this:

private void DataPortal_Fetch(SomeCriteriaClass criteria)

{...}

But, if inside ReadOnlyListBase there is the method: "protected virtual void DataPortal_Fetch(object criteria)" . Is there some performance issue if I use override method inside my inplementation like this:

protected override DataPortal_Fetch(object criteria)

     SomeCriteriaClass someCriteria = (SomeCriteriaClass)criteria;

}

 

JonnyBee replied on Monday, May 14, 2012

CSLA internally relies on reflection to make a dynamic call into the object.

So take f.ex a class that have several criteria classes:

private void DataPortal_Fetch(SomeCriteriaClass1 criteria)
{  ...   }

private void DataPortal_Fetch(SomeCriteriaClass2 criteria)
{  ...   }

private void DataPortal_Fetch(SomeCriteriaClass3 criteria)
{  ...   }

The DataPortal_Fetch all have a similar signature with one object as input.
Rather than having 3 Fetch methods we prefer to have on method and test for the actual criteria type.

protected override DataPortal_Fetch(object criteria)
{
     // Your code should check for the type of Criteria object.
}

That said, CSLA will check for

So this is not so much about performance as for coding style.

foxhard replied on Monday, May 14, 2012

Thanks Jonny

Copyright (c) Marimer LLC