X509ChainElementCollection X509ChainElementCollection X509ChainElementCollection X509ChainElementCollection Class

定义

表示 X509ChainElement 对象集合。Represents a collection of X509ChainElement objects. 此类不能被继承。This class cannot be inherited.

public ref class X509ChainElementCollection sealed : System::Collections::ICollection
public sealed class X509ChainElementCollection : System.Collections.ICollection
type X509ChainElementCollection = class
    interface ICollection
    interface IEnumerable
Public NotInheritable Class X509ChainElementCollection
Implements ICollection
继承
X509ChainElementCollectionX509ChainElementCollectionX509ChainElementCollectionX509ChainElementCollection
实现

示例

下面的代码示例将打开当前用户的个人证书存储区, 允许用户选择证书, 然后将证书和证书链信息写入控制台。The following code example opens the current user's personal certificate store, allows the user to select a certificate, and then writes certificate and certificate chain information to the console. 输出取决于所选的证书。The output depends on the certificate you select.

//Output chain element information.
Console::WriteLine( "Chain Element Information" );
Console::WriteLine( "Number of chain elements: {0}", ch->ChainElements->Count );
Console::WriteLine( "Chain elements synchronized? {0} {1}", ch->ChainElements->IsSynchronized, Environment::NewLine );
System::Collections::IEnumerator^ myEnum = ch->ChainElements->GetEnumerator();
while ( myEnum->MoveNext() )
{
   X509ChainElement ^ element = safe_cast<X509ChainElement ^>(myEnum->Current);
   Console::WriteLine( "Element issuer name: {0}", element->Certificate->Issuer );
   Console::WriteLine( "Element certificate valid until: {0}", element->Certificate->NotAfter );
   Console::WriteLine( "Element certificate is valid: {0}", element->Certificate->Verify() );
   Console::WriteLine( "Element error status length: {0}", element->ChainElementStatus->Length );
   Console::WriteLine( "Element information: {0}", element->Information );
   Console::WriteLine( "Number of element extensions: {0}{1}", element->Certificate->Extensions->Count, Environment::NewLine );
   if ( ch->ChainStatus->Length > 1 )
   {
      for ( int index = 0; index < element->ChainElementStatus->Length; index++ )
      {
         Console::WriteLine( element->ChainElementStatus[ index ].Status );
         Console::WriteLine( element->ChainElementStatus[ index ].StatusInformation );
      }
   }
}

store->Close();
//Output chain element information.
Console.WriteLine ("Chain Element Information");
Console.WriteLine ("Number of chain elements: {0}", ch.ChainElements.Count);
Console.WriteLine ("Chain elements synchronized? {0} {1}", ch.ChainElements.IsSynchronized, Environment.NewLine);

foreach (X509ChainElement element in ch.ChainElements)
{
	Console.WriteLine ("Element issuer name: {0}", element.Certificate.Issuer);
	Console.WriteLine ("Element certificate valid until: {0}", element.Certificate.NotAfter);
	Console.WriteLine ("Element certificate is valid: {0}", element.Certificate.Verify ());
	Console.WriteLine ("Element error status length: {0}", element.ChainElementStatus.Length);
	Console.WriteLine ("Element information: {0}", element.Information);
	Console.WriteLine ("Number of element extensions: {0}{1}", element.Certificate.Extensions.Count, Environment.NewLine);

	if (ch.ChainStatus.Length > 1)
	{
		for (int index = 0; index < element.ChainElementStatus.Length; index++)
		{
			Console.WriteLine (element.ChainElementStatus[index].Status);
			Console.WriteLine (element.ChainElementStatus[index].StatusInformation);
		}
	}
}
store.Close();
'Output chain element information.
Console.WriteLine("Chain Element Information")
Console.WriteLine("Number of chain elements: {0}", ch.ChainElements.Count)
Console.WriteLine("Chain elements synchronized? {0} {1}", ch.ChainElements.IsSynchronized, Environment.NewLine)

Dim element As X509ChainElement
For Each element In ch.ChainElements
    Console.WriteLine("Element issuer name: {0}", element.Certificate.Issuer)
    Console.WriteLine("Element certificate valid until: {0}", element.Certificate.NotAfter)
    Console.WriteLine("Element certificate is valid: {0}", element.Certificate.Verify())
    Console.WriteLine("Element error status length: {0}", element.ChainElementStatus.Length)
    Console.WriteLine("Element information: {0}", element.Information)
    Console.WriteLine("Number of element extensions: {0}{1}", element.Certificate.Extensions.Count, Environment.NewLine)

    If ch.ChainStatus.Length > 1 Then
        Dim index As Integer
        For index = 0 To element.ChainElementStatus.Length
            Console.WriteLine(element.ChainElementStatus(index).Status)
            Console.WriteLine(element.ChainElementStatus(index).StatusInformation)
        Next index
    End If
Next element
store.Close()

注解

调用ChainElements属性时, 将返回此类的实例。An instance of this class is returned when the ChainElements property is called.

属性

Count Count Count Count

获取集合中的元素数。Gets the number of elements in the collection.

IsSynchronized IsSynchronized IsSynchronized IsSynchronized

获取一个值,该值指示链元素的集合是否已同步。Gets a value indicating whether the collection of chain elements is synchronized.

Item[Int32] Item[Int32] Item[Int32] Item[Int32]

获取位于指定索引位置的 X509ChainElement 对象。Gets the X509ChainElement object at the specified index.

SyncRoot SyncRoot SyncRoot SyncRoot

获取一个对象,该对象可用于同步对 X509ChainElementCollection 对象的访问。Gets an object that can be used to synchronize access to an X509ChainElementCollection object.

方法

CopyTo(X509ChainElement[], Int32) CopyTo(X509ChainElement[], Int32) CopyTo(X509ChainElement[], Int32) CopyTo(X509ChainElement[], Int32)

从指定的索引开始,将 X509ChainElementCollection 对象复制到数组中。Copies an X509ChainElementCollection object into an array, starting at the specified index.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

确定指定的对象是否等于当前对象。Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetEnumerator() GetEnumerator() GetEnumerator() GetEnumerator()

获取可用于在链元素集合中定位的 X509ChainElementEnumerator 对象。Gets an X509ChainElementEnumerator object that can be used to navigate through a collection of chain elements.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

作为默认哈希函数。Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

获取当前实例的 TypeGets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

创建当前 Object 的浅表副本。Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

返回表示当前对象的字符串。Returns a string that represents the current object.

(Inherited from Object)

显式界面实现

ICollection.CopyTo(Array, Int32) ICollection.CopyTo(Array, Int32) ICollection.CopyTo(Array, Int32) ICollection.CopyTo(Array, Int32)

从指定的索引开始,将 X509ChainElementCollection 对象复制到数组中。Copies an X509ChainElementCollection object into an array, starting at the specified index.

ICollection.IsSynchronized ICollection.IsSynchronized ICollection.IsSynchronized ICollection.IsSynchronized
ICollection.SyncRoot ICollection.SyncRoot ICollection.SyncRoot ICollection.SyncRoot
IEnumerable.GetEnumerator() IEnumerable.GetEnumerator() IEnumerable.GetEnumerator() IEnumerable.GetEnumerator()

获取可用于在链元素集合中定位的 IEnumerator 对象。Gets an IEnumerator object that can be used to navigate a collection of chain elements.

扩展方法

Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable)

IEnumerable 的元素强制转换为指定的类型。Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable)

根据指定类型筛选 IEnumerable 的元素。Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable)

启用查询的并行化。Enables parallelization of a query.

AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable)

IEnumerable 转换为 IQueryableConverts an IEnumerable to an IQueryable.

适用于