本文整理汇总了C#中Castle.Core.ComponentModel.AddProperty方法的典型用法代码示例。如果您正苦于以下问题:C# ComponentModel.AddProperty方法的具体用法?C# ComponentModel.AddProperty怎么用?C# ComponentModel.AddProperty使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Castle.Core.ComponentModel
的用法示例。
在下文中一共展示了ComponentModel.AddProperty方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: InspectProperties
protected virtual void InspectProperties(ComponentModel model)
{
var targetType = model.Implementation;
#if SILVERLIGHT
if(targetType.IsVisible == false) return;
#endif
if (model.InspectionBehavior == PropertiesInspectionBehavior.Undefined)
{
model.InspectionBehavior = GetInspectionBehaviorFromTheConfiguration(model.Configuration);
}
if (model.InspectionBehavior == PropertiesInspectionBehavior.None)
{
// Nothing to be inspected
return;
}
var properties = GetProperties(model, targetType);
if (properties.Count == 0)
{
return;
}
var filters = StandardPropertyFilters.GetPropertyFilters(model, false);
if (filters == null)
{
properties.ForEach(p => model.AddProperty(BuildDependency(p, isOptional: true)));
}
else
{
foreach (var filter in filters.Concat(new[] { StandardPropertyFilters.Create(PropertyFilter.Default) }))
{
var dependencies = filter.Invoke(model, properties, BuildDependency);
if (dependencies != null)
{
foreach (var dependency in dependencies)
{
model.AddProperty(dependency);
}
}
if (properties.Count == 0)
{
return;
}
}
}
}
示例2: InspectProperties
protected virtual void InspectProperties(ComponentModel model)
{
var targetType = model.Implementation;
#if SILVERLIGHT
if(targetType.IsVisible == false) return;
#endif
if (model.InspectionBehavior == PropertiesInspectionBehavior.Undefined)
{
model.InspectionBehavior = GetInspectionBehaviorFromTheConfiguration(model.Configuration);
}
if (model.InspectionBehavior == PropertiesInspectionBehavior.None)
{
// Nothing to be inspected
return;
}
BindingFlags bindingFlags;
if (model.InspectionBehavior == PropertiesInspectionBehavior.DeclaredOnly)
{
bindingFlags = BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly;
}
else // if (model.InspectionBehavior == PropertiesInspectionBehavior.All) or Undefined
{
bindingFlags = BindingFlags.Public | BindingFlags.Instance;
}
var properties = targetType.GetProperties(bindingFlags);
var filters = GetPropertyFilters(model);
foreach (var property in properties)
{
if (!property.CanWrite || property.GetSetMethod() == null)
{
continue;
}
var indexerParams = property.GetIndexParameters();
if (indexerParams != null && indexerParams.Length != 0)
{
continue;
}
if (property.IsDefined(typeof(DoNotWireAttribute), true))
{
continue;
}
if (filters != null && filters.Any(f => f(property) == false))
{
continue;
}
var dependency = new DependencyModel(property.Name, property.PropertyType, isOptional: true);
model.AddProperty(new PropertySet(property, dependency));
}
}