A redundant data service
It's hard to review just a small part of your code like this (for example, the way you're using Items and isInitialized looks like code smell to me, but it's hard to tell like this), so I'll focus on what I can actually see.



protected async Task PerformInitInternal(string okMessage, string koMessage, Func&lt;Task&lt;IList&lt;T&gt;&gt;&gt; function)



It's an asynchronous method, so its name should end with Async. Also, PerformInit is pretty vague, maybe a more concrete name could be better, for example, LoadData?
While the symmetry between OK and KO is fun, I don't think koMessage is a good name. successMessage and errorMessage would be better.
Speaking of which, do you actually need both messages? Or any messages at all? I would consider a completely generic message, assuming the rest of the message can be inferred from other parts of the log, like the type name.
function is too vague.