Я пробиваю себе голову над этим. Я ценю любую помощь.Пользовательский провайдер персонализации - Внедрить метод FindState
У меня есть пользовательский интерфейс PersonalizationProvider, пользовательский WebPartManager и пользовательский класс WePart. У меня есть таблицы пользовательских данных для хранения данных персонализации для каждого пользователя. Моя задача - программировать петлю через все веб-части, добавленные каждым пользователем, чтобы я мог установить персонализируемый атрибут.
Согласно документации, метод FindState возвращает PersonalizationStateInfoCollection для данного PersonalizationStateQuery:
PersonalizationStateQuery pq = new PersonalizationStateQuery();
pq.PathToMatch = path;
pq.UsernameToMatch = userName;
int count;
CustomPersonalizationProvider provider= new CustomPersonalizationProvider();
PersonalizationStateInfoCollection pcol = provider.FindState(PersonalizationScope.User, pq, 0, Int32.MaxValue, out count);
PersonalizationProvider является абстрактным классом, и я должен обеспечить свою собственную реализацию метода FindState в моем пользовательском классе. Я провел последние 6 часов, пытаясь найти что-то, и я не знаю, как реализовать этот метод.
PersonalizationData - это blob. Я мог бы десериализовать его на массив объектов. Но ничего больше. Я понятия не имею, как сериализовать/десериализовать этот blob в PersonalizationStateInfoCollection.
String BlobString = Convert.ToBase64String(UserDataBlob);
ObjectStateFormatter formatter = new ObjectStateFormatter();
Object[] DeserializedObjects = (Object[])formatter.Deserialize(BlobString);
Кто-нибудь знает, как WebPartManager Сериализует UserPersonalizationData, чтобы массив байтов, который хранится в базе данных?