Итак, я пытаюсь получить список свойств, сгенерированных из ресурса Strings.resx. A Строки класс автогенерируется из этого, и я просто пытаюсь получить список этих имен свойств. Ниже приведен пример кода, который не работает.Type.GetProperties() не работает
// Well this works, so I know there is a property there.
var clearly_a_property = Strings.home_cancel;
// Yet none of this works
var nothing = typeof(Strings).GetProperties(System.Reflection.BindingFlags.Public |
System.Reflection.BindingFlags.Static |
System.Reflection.BindingFlags.FlattenHierarchy);
nothing = typeof(Strings).GetProperties(System.Reflection.BindingFlags.Public |
System.Reflection.BindingFlags.Instance |
System.Reflection.BindingFlags.FlattenHierarchy);
nothing = typeof(Strings).GetProperties(System.Reflection.BindingFlags.Public |
System.Reflection.BindingFlags.Static);
nothing = typeof(Strings).GetProperties(System.Reflection.BindingFlags.Public);
nothing = typeof(Strings).GetProperties(System.Reflection.BindingFlags.FlattenHierarchy);
nothing = typeof(Strings).GetProperties(System.Reflection.BindingFlags.Static);
nothing = typeof(Strings).GetProperties(System.Reflection.BindingFlags.Instance);
nothing = typeof(Strings).GetProperties(System.Reflection.BindingFlags.DeclaredOnly);
nothing = typeof(Strings).GetProperties();
Так что же дает? Класс, который пытается получить доступ Строки находится в одной и той же сборке, поэтому я не думаю, что это проблема.
Предлагает фрагмент из автогенератора Строки Класс.
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Strings {
//------------------
// other stuff ...
//------------------
internal static string home_cancel {
get {
return ResourceManager.GetString("home_cancel", resourceCulture);
}
}
//------------------
// other stuff ...
//------------------
}
Хорошо, если все ваши статические свойства являются «внутренними», вполне естественно, что 'BindingFlags.Public' не возвращает их. – hvd
Оформить заказ документации, очевидно, что вы делаете неправильно http://msdn.microsoft.com/en-us/library/system.reflection.bindingflags(v=vs.110).aspx – MethodMan
'BindingFlags.NonPublic'? –