J'ai une bibliothèque externe que j'utilise, à savoir Aspose.Email.dll (disponible sur NuGet). Il a une classe PageInfo
. Aller à la définition montre ce qui suit pour en Visual Studio:Comment utiliser la réflexion pour définir la propriété de cet objet?
using System;
namespace Aspose.Email
{
public class PageInfo
{
protected PageInfo next;
public int AbsoluteOffset { get; }
public int ItemsPerPage { get; }
public bool LastPage { get; }
public virtual PageInfo NextPage { get; }
public int PageOffset { get; }
public int TotalCount { get; }
}
}
Longue histoire courte, je dois créer un PageInfo objet. Comment puis-je en créer un en utilisant Reflection et également définir sa propriété ItemsPerPage
?
J'ai essayé:
var result = (PageInfo)FormatterServices.GetUninitializedObject(typeof(PageInfo));
typeof(PageInfo).GetProperty("ItemsPerPage", BindingFlags.Instance | BindingFlags.Public).SetValue(result, 1);
Le problème est que SetValue
erreurs sur avec Property set method not found.
Que faites-vous pour créer un 'PageInfo'? Peut-être que si vous posez une nouvelle question sur * "Comment puis-je faire X sans créer mon propre PageInfo?" * Vous pouvez avoir une meilleure solution que d'utiliser la réflexion. –
J'avais peur que quelqu'un puisse demander. Je programme une bibliothèque d'interface abstraite pour consolider deux bibliothèques de messagerie différentes que j'utilise ensemble (ceci et la bibliothèque d'échange) J'essaye de consolider une manière de pager des données entre les deux. Malheureusement, une grande mise en garde avec cette bibliothèque IMAP est que vous ne pouvez pas vraiment construire une requête de pagination arbitraire, mais devez toujours utiliser un objet de pagination lié après avoir fait un appel pour obtenir des données paginées. C'est à cause de la nature de la bibliothèque et de la façon dont son API a été implémentée que cela devient un peu pénible. – Alexandru