Как я могу использовать PrivateObject для доступа к закрытым членам как моего класса, так и его родителя ?

Я не очень большой поклонник частичных классов и не использую их сам.

одно время я действительно нахожу их полезными, и хорошо использовать однако, когда Вы хотите добавить что-то к LINQ к коду разработчика SQL, но кроме этого я нахожу, распространяете ли Вы код в различные файлы только ради него, это может сделать его очень трудно, чтобы читать и справиться.

, Возможно, если Вам разделяли классы на многие файлы, возможно, Ваши классы делают к очень... просто мысли:)

24
задан David Yaw 22 March 2011 в 19:53
поделиться

2 ответа

// create an instance of class SearchPlanogramsBuilder:
SearchPlanogramsBuilder searchPlanogramBuilder = new SearchPlanogramsBuilder(); 

// executing the method BuildSearchParameters(return type is void) with input searchPlanoGramsFilters:
searchPlanogramBuilder.BuildSearchParameters(searchPlanoGramsFilters);

// create privateobject and pass instance created for the class:
PrivateObject helperobject1 = new PrivateObject(searchPlanogramBuilder);

// type cast exactly as parameter(which is private variable) in the method:
Collection<string> parameter = (Collection<string>)helperobject1.GetFieldOrProperty("parameters");
1
ответ дан 28 November 2019 в 23:17
поделиться

Я хотел сделать то же самое, и я сделал это методы расширения. Теперь это работает хорошо. Моя первоначальная идея из вашего поста. Спасибо!

https://github.com/cactuaroid/PrivateObjectExtensions

В основном это рекурсивный поиск владельца члена с помощью Type.GetFields() и Type.GetProperties(), а затем создайте PrivateObject (или PrivateType) как правильный тип для доступа к члену.

1
ответ дан 28 November 2019 в 23:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: