Для Kotlin вы можете использовать context
непосредственно в фрагментах. Но в некоторых случаях вы найдете ошибку, например
Тип несоответствия: inferred type is Context? но ожидался контекст
blockquote>, для которого вы можете это сделать
val ctx = context ?: return textViewABC.setTextColor(ContextCompat.getColor(ctx, android.R.color.black))
Это должно сработать:
using System.Reflection;
string company = ((AssemblyCompanyAttribute)Attribute.GetCustomAttribute(
Assembly.GetExecutingAssembly(), typeof(AssemblyCompanyAttribute), false))
.Company;
Если вы действительно хотите сохранить значение в одном месте и у вас несколько сборок в вашем решении, вы можете либо:
GetEntryAssembly
вместо GetExecutingAssembly
и установить атрибут company только на вашей входной сборке, или лучше:UPDATE
Улучшил код по предложению @hmemcpy, так что [0]
больше не нужен. Спасибо!
Если вам нужен хороший универсальный метод для извлечения данных о сборке, попробуйте следующее:
public string GetAssemblyAttribute<T>(Func<T, string> value)
where T : Attribute
{
T attribute = (T)Attribute.GetCustomAttribute(Assembly.GetExecutingAssembly(), typeof (T));
return value.Invoke(attribute);
}
, так что вы можете затем вызвать
string title = GetAssemblyAttribute<AssemblyTitleAttribute>(a => a.Title);
string copyright = GetAssemblyAttribute<AssemblyCopyrightAttribute>(a => a.Copyright);
string version = GetAssemblyAttribute<AssemblyVersionAttribute>(a => a.Version);
string description = GetAssemblyAttribute<AssemblyDescriptionAttribute>(a => a.Description);