• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C# ITypeDescriptor类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C#中ITypeDescriptor的典型用法代码示例。如果您正苦于以下问题:C# ITypeDescriptor类的具体用法?C# ITypeDescriptor怎么用?C# ITypeDescriptor使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



ITypeDescriptor类属于命名空间,在下文中一共展示了ITypeDescriptor类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。

示例1: Retrieve

        /// <summary>
        /// Retrieves the value itself or the value of one of its item, depending on the given <see cref="Index"/>.
        /// </summary>
        /// <param name="value">The value on which this method applies.</param>
        /// <param name="index">The index of the item to retrieve. If <see cref="Index.Empty"/> is passed, this method will return the value itself.</param>
        /// <param name="descriptor">The descriptor of the type of <paramref name="value"/>.</param>
        /// <returns>The value itself or the value of one of its item.</returns>
        public static object Retrieve(object value, Index index, ITypeDescriptor descriptor)
        {
            if (index.IsEmpty)
                return value;

            if (value == null) throw new ArgumentNullException(nameof(value));

            var collectionDescriptor = descriptor as CollectionDescriptor;
            if (collectionDescriptor != null)
            {
                return collectionDescriptor.GetValue(value, index.Int);
            }
            var dictionaryDescriptor = descriptor as DictionaryDescriptor;
            if (dictionaryDescriptor != null)
            {
                return dictionaryDescriptor.GetValue(value, index.Value);
            }

            // Try with the concrete type descriptor
            var objectDescriptor = TypeDescriptorFactory.Default.Find(value.GetType());
            if (objectDescriptor != descriptor)
            {
                return Retrieve(value, index, objectDescriptor);
            }

            throw new NotSupportedException("Unable to retrieve the value at the given index, this collection is unsupported");
        }
开发者ID:Kryptos-FR,项目名称:xenko-reloaded,代码行数:34,代码来源:Content.cs


示例2: ObjectContext

 /// <summary>
 /// Initializes a new instance of the <see cref="ObjectContext"/> struct.
 /// </summary>
 /// <param name="serializerContext">The serializer context.</param>
 /// <param name="instance">The instance.</param>
 /// <param name="descriptor">The descriptor.</param>
 public ObjectContext(SerializerContext serializerContext, object instance, ITypeDescriptor descriptor)
     : this()
 {
     SerializerContext = serializerContext;
     Instance = instance;
     Descriptor = descriptor;
 }
开发者ID:vasily-kirichenko,项目名称:SharpYaml,代码行数:13,代码来源:ObjectContext.cs


示例3: TransformForSerialization

        /// <inheritdoc/>
        protected override object TransformForSerialization(ITypeDescriptor descriptor, object collection)
        {
            var dictionaryDescriptor = (DictionaryDescriptor)descriptor;
            var instance = CreatEmptyContainer(descriptor);

            CollectionItemIdentifiers identifier;
            if (!CollectionItemIdHelper.TryGetCollectionItemIds(collection, out identifier))
            {
                identifier = new CollectionItemIdentifiers();
            }
            var keyWithIdType = typeof(KeyWithId<>).MakeGenericType(dictionaryDescriptor.KeyType);
            foreach (var item in dictionaryDescriptor.GetEnumerator(collection))
            {
                ItemId id;
                if (!identifier.TryGet(item.Key, out id))
                {
                    id = ItemId.New();
                    identifier.Add(item.Key, id);
                }
                var keyWithId = Activator.CreateInstance(keyWithIdType, id, item.Key);
                instance.Add(keyWithId, item.Value);
            }

            return instance;
        }
开发者ID:Kryptos-FR,项目名称:xenko-reloaded,代码行数:26,代码来源:DictionaryWithIdsSerializer.cs


示例4: VisitCollectionItem

 /// <inheritdoc/>
 public override void VisitCollectionItem(IEnumerable collection, CollectionDescriptor descriptor, int index, object item, ITypeDescriptor itemDescriptor)
 {
     if (CurrentPath.Match(MemberPath))
         VisitAssetMember(item, itemDescriptor);
     else
         base.VisitCollectionItem(collection, descriptor, index, item, itemDescriptor);
 }
开发者ID:Kryptos-FR,项目名称:xenko-reloaded,代码行数:8,代码来源:AssetMemberVisitorBase.cs


示例5: FlexiPlainTextSerializationContext

 public FlexiPlainTextSerializationContext(
     IFlexiPlainTextSerializer serializer,
     ITypeDescriptor typeDescriptor,
     TypeResolver typeResolver,
     Func<Type, CreateInstanceContext, object> createInstanceWith = null)
     : base(serializer, typeDescriptor, typeResolver, createInstanceWith)
 { }
开发者ID:squaredinfinity,项目名称:Foundation,代码行数:7,代码来源:FlexiPlainTextSerializationContext.cs


示例6: ContentBase

 protected ContentBase(ITypeDescriptor descriptor, bool isPrimitive, IReference reference)
 {
     if (descriptor == null) throw new ArgumentNullException(nameof(descriptor));
     Reference = reference;
     Descriptor = descriptor;
     IsPrimitive = isPrimitive;
 }
开发者ID:Kryptos-FR,项目名称:xenko-reloaded,代码行数:7,代码来源:ContentBase.cs


示例7: VisitArrayItem

 /// <inheritdoc/>
 public override void VisitArrayItem(Array array, ArrayDescriptor descriptor, int index, object item, ITypeDescriptor itemDescriptor)
 {
     if (CurrentPath.Match(MemberPath))
         VisitAssetMember(item, itemDescriptor);
     else
         base.VisitArrayItem(array, descriptor, index, item, itemDescriptor);
 }
开发者ID:Kryptos-FR,项目名称:xenko-reloaded,代码行数:8,代码来源:AssetMemberVisitorBase.cs


示例8: TryCreate

        public override IYamlSerializable TryCreate(SerializerContext context, ITypeDescriptor typeDescriptor)
        {
            if (CanVisit(typeDescriptor.Type))
                return this;

            return null;
        }
开发者ID:h78hy78yhoi8j,项目名称:xenko,代码行数:7,代码来源:EntityGroupAssetSerializer.cs


示例9: ObjectContext

 /// <summary>
 /// Initializes a new instance of the <see cref="ObjectContext"/> struct.
 /// </summary>
 /// <param name="serializerContext">The serializer context.</param>
 /// <param name="instance">The instance.</param>
 /// <param name="descriptor">The descriptor.</param>
 public ObjectContext(SerializerContext serializerContext, object instance, ITypeDescriptor descriptor) : this()
 {
     SerializerContext = serializerContext;
     Instance = instance;
     Descriptor = descriptor;
     Properties = new PropertyContainer();
 }
开发者ID:Kryptos-FR,项目名称:xenko-reloaded,代码行数:13,代码来源:ObjectContext.cs


示例10: ObjectContent

 public ObjectContent(object value, ITypeDescriptor descriptor, bool isPrimitive, IReference reference)
     : base(descriptor, isPrimitive, reference)
 {
     if (reference is ObjectReference)
         throw new ArgumentException($"An {nameof(ObjectContent)} cannot contain an {nameof(ObjectReference)}");
     this.value = value;
 }
开发者ID:Kryptos-FR,项目名称:xenko-reloaded,代码行数:7,代码来源:ObjectContent.cs


示例11: Unbinder

        public Unbinder(ITypeDescriptor typeDescriptor,
		                ITypeSimplicityEvaluator typeSimplicityEvaluator,
		                IValueUnbinder valueUnbinder)
        {
            _typeDescriptor = typeDescriptor;
            _typeSimplicityEvaluator = typeSimplicityEvaluator;
            _valueUnbinder = valueUnbinder;
        }
开发者ID:mhinze,项目名称:unbound,代码行数:8,代码来源:Unbinder.cs


示例12: InitFromItemDescriptor

 void InitFromItemDescriptor(ITypeDescriptor descriptor)
 {
     if (descriptor == _itemDescriptor && _name != null) return;
     _itemDescriptor = descriptor;
     if ((descriptor.Name?.Length ?? 0) == 0) return;
     _itemType = _itemDescriptor.GetPreferedType();
     Sealed = _itemDescriptor.Sealed;
     Name = $"List<{_itemDescriptor.Name}>";
 }
开发者ID:Xamarui,项目名称:BTDB,代码行数:9,代码来源:ListTypeDescriptor.cs


示例13: ContentBase

 protected ContentBase(ITypeDescriptor descriptor, bool isPrimitive, IReference reference)
 {
     if (descriptor == null) throw new ArgumentNullException("descriptor");
     this.reference = reference;
     Descriptor = descriptor;
     IsPrimitive = isPrimitive;
     SerializeFlags = ViewModelContentSerializeFlags.SerializeValue;
     ShouldProcessReference = true;
 }
开发者ID:h78hy78yhoi8j,项目名称:xenko,代码行数:9,代码来源:ContentBase.cs


示例14: VisitDictionaryKeyValue

        public override void VisitDictionaryKeyValue(object dictionary, DictionaryDescriptor descriptor, object key, ITypeDescriptor keyDescriptor, object value, ITypeDescriptor valueDescriptor)
        {
            // TODO: CurrentPath is valid only for value, not key
            //if (ProcessObject(key, keyDescriptor.Type)) key = null;
            if (ProcessObject(value, valueDescriptor.Type)) return;

            Visit(value, valueDescriptor);
            //base.VisitDictionaryKeyValue(dictionary, descriptor, key, keyDescriptor, value, valueDescriptor);
        }
开发者ID:Kryptos-FR,项目名称:xenko-reloaded,代码行数:9,代码来源:UnloadableObjectRemover.cs


示例15: CreateDataContextTypeStack

 protected override IDataContextStack CreateDataContextTypeStack(ITypeDescriptor viewModelType, ITypeDescriptor wrapperType = null, IDataContextStack parentDataContextStack = null)
 {
     var dataContextTypeStack = new DataContextStack(ResolvedTypeDescriptor.ToSystemType(viewModelType), parentDataContextStack as DataContextStack);
     if (wrapperType != null)
     {
         dataContextTypeStack.RootControlType = ResolvedTypeDescriptor.ToSystemType(wrapperType);
     }
     return dataContextTypeStack;
 }
开发者ID:darilek,项目名称:dotvvm,代码行数:9,代码来源:DefaultControlTreeResolver.cs


示例16: FlexiXmlSerializationContext

 public FlexiXmlSerializationContext(
     IFlexiSerializer serializer, 
     ITypeDescriptor typeDescriptor, 
     TypeResolver typeResolver,
     FlexiXmlSerializationOptions options,
     Func<Type, CreateInstanceContext, object> createInstanceWith = null)
     : base(serializer, typeDescriptor, typeResolver, createInstanceWith)
 {
     this.Options = options;
 }
开发者ID:squaredinfinity,项目名称:Foundation,代码行数:10,代码来源:FlexiXmlSerializationContext.cs


示例17: TryCreate

 /// <inheritdoc/>
 public override IYamlSerializable TryCreate(SerializerContext context, ITypeDescriptor typeDescriptor)
 {
     if (typeDescriptor is CollectionDescriptor)
     {
         var dataStyle = typeDescriptor.Type.GetCustomAttribute<DataStyleAttribute>();
         if (dataStyle == null || dataStyle.Style != DataStyle.Compact)
             return this;
     }
     return null;
 }
开发者ID:Kryptos-FR,项目名称:xenko-reloaded,代码行数:11,代码来源:CollectionWithIdsSerializer.cs


示例18: SerializationContext

 public SerializationContext(
     IFlexiSerializer serializer,
     ITypeDescriptor typeDescriptor,
     TypeResolver typeResolver,
     Func<Type, CreateInstanceContext, object> createInstanceWith = null)
 {
     this.Serializer = serializer;
     this.TypeDescriptor = typeDescriptor;
     this.TypeResolver = typeResolver;
     this.CustomCreateInstanceWith = createInstanceWith;
 }
开发者ID:squaredinfinity,项目名称:Foundation,代码行数:11,代码来源:SerializationContext.cs


示例19: InitFromKeyValueDescriptors

 void InitFromKeyValueDescriptors(ITypeDescriptor keyDescriptor, ITypeDescriptor valueDescriptor)
 {
     if (_keyDescriptor == keyDescriptor && _valueDescriptor == valueDescriptor && _name != null) return;
     _keyDescriptor = keyDescriptor;
     _valueDescriptor = valueDescriptor;
     if ((_keyDescriptor.Name?.Length ?? 0) == 0 || (_valueDescriptor.Name?.Length ?? 0) == 0) return;
     _keyType = _keyDescriptor.GetPreferedType();
     _valueType = _valueDescriptor.GetPreferedType();
     Sealed = _keyDescriptor.Sealed && _valueDescriptor.Sealed;
     Name = $"Dictionary<{_keyDescriptor.Name}, {_valueDescriptor.Name}>";
 }
开发者ID:Xamarui,项目名称:BTDB,代码行数:11,代码来源:DictionaryTypeDescriptor.cs


示例20: CanAttach

        /// <inheritdoc/>
        public override bool CanAttach(ITypeDescriptor typeDescriptor, MemberDescriptorBase memberDescriptor)
        {
            var type = typeDescriptor.GetInnerCollectionType();
            var isNullableStruct = type.IsNullable() && Nullable.GetUnderlyingType(type).IsStruct();
            var isAbstractOrClass = type.IsAbstract || type.IsClass;
            //var isCollection = (typeDescriptor is CollectionDescriptor) || (typeDescriptor is DictionaryDescriptor);

            //var result = isNullableStruct || (isAbstractOrClass && !isCollection);
            var result = isNullableStruct || isAbstractOrClass;
            return result;
        }
开发者ID:h78hy78yhoi8j,项目名称:xenko,代码行数:12,代码来源:CreateNewInstanceCommand.cs



注:本文中的ITypeDescriptor类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C# ITypeDescriptorContext类代码示例发布时间:2022-05-24
下一篇:
C# ITypeDefinitionMember类代码示例发布时间:2022-05-24
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap