Как я могу получить доступ к внутреннему классу из внешней сборки?

Без доступа к типу (и без .cs-file «InternalsVisibleTo» и т. д.) вам .cs-file пришлось бы использовать c# отражение. Но лучше задать .cs-file вопрос: следует ли получать доступ c-sharp к этим данным? Он не является c#.net частью контракта открытого .cs-file типа ... мне кажется, что classes он предназначен для обработки classes как непрозрачный объект (для c#.net их целей, а не для ваших).

Вы class описали его как поле общедоступного c-sharp экземпляра; чтобы получить .cs-file это через отражение:

object obj = ...
string value = (string)obj.GetType().GetField("test").GetValue(obj);

Если c#-language это действительно свойство c#.net (а не поле):

string value = (string)obj.GetType().GetProperty("test").GetValue(obj,null);

Если он не является visual-c# общедоступным, вам потребуется c# использовать перегрузку BindingFlags для c#.net GetField / GetProperty.

Важное замечание: будьте осторожны с c# подобным отражением; реализация c#.net может измениться в следующей c#.net версии (нарушение кода), или c# она может быть запутана (нарушен c-sharp код), или у вас может не class хватить «доверия» (нарушение c-sharp кода). Вы замечаете узор?

c#

class

2022-11-08T21:40:47+00:00
Вопросы с похожей тематикой, как у вопроса:

Как я могу получить доступ к внутреннему классу из внешней сборки?