Я не очень большой поклонник частичных классов и не использую их сам.
одно время я действительно нахожу их полезными, и хорошо использовать однако, когда Вы хотите добавить что-то к LINQ к коду разработчика SQL, но кроме этого я нахожу, распространяете ли Вы код в различные файлы только ради него, это может сделать его очень трудно, чтобы читать и справиться.
, Возможно, если Вам разделяли классы на многие файлы, возможно, Ваши классы делают к очень... просто мысли:)
// 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");
Я хотел сделать то же самое, и я сделал это методы расширения. Теперь это работает хорошо. Моя первоначальная идея из вашего поста. Спасибо!
https://github.com/cactuaroid/PrivateObjectExtensions
В основном это рекурсивный поиск владельца члена с помощью Type.GetFields()
и Type.GetProperties()
, а затем создайте PrivateObject (или PrivateType) как правильный тип для доступа к члену.