本文整理汇总了C#中System.Reflection.TypeInfo.GetDeclaredProperty方法的典型用法代码示例。如果您正苦于以下问题:C# TypeInfo.GetDeclaredProperty方法的具体用法?C# TypeInfo.GetDeclaredProperty怎么用?C# TypeInfo.GetDeclaredProperty使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Reflection.TypeInfo
的用法示例。
在下文中一共展示了TypeInfo.GetDeclaredProperty方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: AllPublicConcreteTypesShouldBeAnnotatedWithDebuggerDisplay
public void AllPublicConcreteTypesShouldBeAnnotatedWithDebuggerDisplay(TypeInfo type)
{
var attribute = type.GetCustomAttribute<DebuggerDisplayAttribute>(false);
Assert.Equal("{DebuggerDisplay, nq}", attribute.Value);
var debuggerDisplay = type.GetDeclaredProperty("DebuggerDisplay");
Assert.False(debuggerDisplay.GetAccessors().Any(x => x.IsPublic));
}
示例2: GetProperty
public static PropertyInfo GetProperty(TypeInfo ti, string name)
{
var r = ti.GetDeclaredProperty(name);
if (r != null) return r;
throw new ArgumentException("Cannot get property: " + name);
}
示例3: TryGetPropertyInHierarchy
public static PropertyInfo TryGetPropertyInHierarchy(TypeInfo ti, string name)
{
while (true)
{
var pi = ti.GetDeclaredProperty(name);
if (pi != null)
{
return pi;
}
var baseType = ti.BaseType;
if (baseType == null)
{
return null;
}
ti = baseType.GetTypeInfo();
}
}
示例4: GetIndexer
private static PropertyInfo GetIndexer(TypeInfo typeInfo)
{
PropertyInfo indexer;
for (; typeInfo != null; typeInfo = typeInfo.BaseType?.GetTypeInfo())
{
// Check for the default indexer name first to make this faster.
// This will only be false when a class in VB has a custom indexer name.
if ((indexer = typeInfo.GetDeclaredProperty(CommonPropertyNames.IndexerName)) != null)
{
return indexer;
}
foreach (var property in typeInfo.DeclaredProperties)
{
if (property.GetIndexParameters().Any())
{
return property;
}
}
}
return null;
}
示例5: actuallyGetProperty
PropertyInfo actuallyGetProperty(TypeInfo typeInfo, string propertyName)
{
var current = typeInfo;
while (current != null) {
var ret = typeInfo.GetDeclaredProperty(propertyName);
if (ret != null && ret.IsStatic()) return ret;
current = current.BaseType.GetTypeInfo();
}
return null;
}
示例6: SetupPart
void SetupPart(TypeInfo sourceType, BindingExpressionPart part)
{
part.Arguments = null;
part.LastGetter = null;
part.LastSetter = null;
PropertyInfo property = null;
if (part.IsIndexer)
{
if (sourceType.IsArray)
{
int index;
if (!int.TryParse(part.Content, out index))
Log.Warning("Binding", "{0} could not be parsed as an index for a {1}", part.Content, sourceType);
else
part.Arguments = new object[] { index };
part.LastGetter = sourceType.GetDeclaredMethod("Get");
part.LastSetter = sourceType.GetDeclaredMethod("Set");
part.SetterType = sourceType.GetElementType();
}
DefaultMemberAttribute defaultMember = sourceType.GetCustomAttributes(typeof(DefaultMemberAttribute), true).OfType<DefaultMemberAttribute>().FirstOrDefault();
string indexerName = defaultMember != null ? defaultMember.MemberName : "Item";
part.IndexerName = indexerName;
property = sourceType.GetDeclaredProperty(indexerName);
if (property == null)
property = sourceType.BaseType.GetProperty(indexerName);
if (property != null)
{
ParameterInfo parameter = property.GetIndexParameters().FirstOrDefault();
if (parameter != null)
{
try
{
object arg = Convert.ChangeType(part.Content, parameter.ParameterType, CultureInfo.InvariantCulture);
part.Arguments = new[] { arg };
}
catch (FormatException)
{
}
catch (InvalidCastException)
{
}
catch (OverflowException)
{
}
}
}
}
else
{
property = sourceType.GetDeclaredProperty(part.Content);
if (property == null)
property = sourceType.BaseType.GetProperty(part.Content);
}
if (property != null)
{
if (property.CanRead && property.GetMethod.IsPublic && !property.GetMethod.IsStatic)
part.LastGetter = property.GetMethod;
if (property.CanWrite && property.SetMethod.IsPublic && !property.SetMethod.IsStatic)
{
part.LastSetter = property.SetMethod;
part.SetterType = part.LastSetter.GetParameters().Last().ParameterType;
if (Binding.AllowChaining)
{
FieldInfo bindablePropertyField = sourceType.GetDeclaredField(part.Content + "Property");
if (bindablePropertyField != null && bindablePropertyField.FieldType == typeof(BindableProperty) && sourceType.ImplementedInterfaces.Contains(typeof(IElementController)))
{
MethodInfo setValueMethod = null;
foreach (MethodInfo m in sourceType.AsType().GetRuntimeMethods())
{
if (m.Name.EndsWith("IElementController.SetValueFromRenderer"))
{
ParameterInfo[] parameters = m.GetParameters();
if (parameters.Length == 2 && parameters[0].ParameterType == typeof(BindableProperty))
{
setValueMethod = m;
break;
}
}
}
if (setValueMethod != null)
{
part.LastSetter = setValueMethod;
part.IsBindablePropertySetter = true;
part.BindablePropertyField = bindablePropertyField.GetValue(null);
}
}
}
}
}
}
示例7: AddDependencyPropertyInfo
/// <summary>
/// Adds the DependencyPropertyInfo object for the given.
/// </summary>
/// <param name="type">The type.</param>
/// <param name="typeInfo">The type info.</param>
/// <param name="dependencyProperty">The dependency property.</param>
/// <param name="propertyName">Name of the dependency property.</param>
/// <param name="propertyList">The non-attached dependency property list for the given type.</param>
private static void AddDependencyPropertyInfo(
Type type,
TypeInfo typeInfo,
DependencyProperty dependencyProperty,
string propertyName,
ref List<DependencyPropertyInfo> propertyList)
{
try
{
bool? isAttached = null;
// Check for plain property matching the dependency property.
if (typeInfo.GetDeclaredProperty(propertyName) == null)
{
isAttached = true;
}
else
{
// Check for the Get method typically only specified for attached properties
var getMethodName = string.Format("Get{0}", propertyName);
var getMethod = typeInfo.GetDeclaredMethod(getMethodName);
if (getMethod != null)
{
isAttached = true;
}
else
{
isAttached = false;
}
}
if (isAttached == true)
{
// Attached property
var displayName = string.Format("{0}.{1}", type.Name, propertyName);
AttachedProperties.Add(
new DependencyPropertyInfo(
dependencyProperty,
propertyName,
type,
displayName,
true));
}
else
{
// non-attached property
if (propertyList == null)
{
propertyList = new List<DependencyPropertyInfo>();
DependencyProperties.Add(type, propertyList);
}
propertyList.Add(
new DependencyPropertyInfo(
dependencyProperty,
propertyName,
type,
propertyName,
false));
}
}
catch (Exception ex)
{
Debug.WriteLine(ex);
}
}