Evidence 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
定义组成对安全策略决策的输入的一组信息。 此类不能被继承。
public ref class Evidence sealed : System::Collections::ICollection
public sealed class Evidence : System.Collections.ICollection
[System.Serializable]
public sealed class Evidence : System.Collections.ICollection
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class Evidence : System.Collections.ICollection
type Evidence = class
interface ICollection
interface IEnumerable
[<System.Serializable>]
type Evidence = class
interface ICollection
interface IEnumerable
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type Evidence = class
interface ICollection
interface IEnumerable
Public NotInheritable Class Evidence
Implements ICollection
- 继承
-
Evidence
- 属性
- 实现
示例
下面的代码示例演示如何使用主机证据和程序集证据创建新 Evidence 类。
using namespace System;
using namespace System::Collections;
using namespace System::Security;
using namespace System::Security::Policy;
using namespace System::Security::Permissions;
using namespace System::Globalization;
public ref class Evidence_Example
{
public:
bool CreateEvidence()
{
bool retVal = true;
try
{
// Create empty evidence using the default contructor.
Evidence^ ev1 = gcnew Evidence;
Console::WriteLine( "Created empty evidence with the default constructor." );
// Constructor used to create null host evidence.
Evidence^ ev2a = gcnew Evidence( nullptr );
Console::WriteLine( "Created an Evidence object with null host evidence." );
// Constructor used to create host evidence.
Url^ url = gcnew Url( "http://www.treyresearch.com" );
Console::WriteLine( "Adding host evidence {0}", url );
ev2a->AddHost( url );
Evidence^ ev2b = gcnew Evidence( ev2a );
Console::WriteLine( "Copy evidence into new evidence" );
IEnumerator^ enum1 = ev2b->GetHostEnumerator();
enum1->MoveNext();
Console::WriteLine( enum1->Current );
// Constructor used to create both host and assembly evidence.
array<Object^>^oa1 = {};
Site^ site = gcnew Site( "www.wideworldimporters.com" );
array<Object^>^oa2 = {url,site};
Evidence^ ev3a = gcnew Evidence( oa1,oa2 );
enum1 = ev3a->GetHostEnumerator();
IEnumerator^ enum2 = ev3a->GetAssemblyEnumerator();
enum2->MoveNext();
Object^ obj1 = enum2->Current;
enum2->MoveNext();
Console::WriteLine( "URL = {0} Site = {1}", obj1, enum2->Current );
// Constructor used to create null host and null assembly evidence.
Evidence^ ev3b = gcnew Evidence( (array<Object^>^)nullptr, (array<Object^>^)nullptr );
Console::WriteLine( "Create new evidence with null host and assembly evidence" );
}
catch ( Exception^ e )
{
Console::WriteLine( "Fatal error: {0}", e );
return false;
}
return retVal;
}
Evidence^ DemonstrateEvidenceMembers()
{
Evidence^ myEvidence = gcnew Evidence;
String^ sPubKeyBlob = "00240000048000009400000006020000"
"00240000525341310004000001000100"
"19390E945A40FB5730204A25FA5DC4DA"
"B18688B412CB0EDB87A6EFC50E2796C9"
"B41AD3040A7E46E4A02516C598678636"
"44A0F74C39B7AB9C38C01F10AF4A5752"
"BFBCDF7E6DD826676AD031E7BCE63393"
"495BAD2CA4BE03B529A73C95E5B06BE7"
"35CA0F622C63E8F54171BD73E4C8F193"
"CB2664163719CA41F8159B8AC88F8CD3";
array<Byte>^pubkey = HexsToArray( sPubKeyBlob );
// Create a strong name.
StrongName^ mSN = gcnew StrongName( gcnew StrongNamePublicKeyBlob( pubkey ),"SN01",gcnew Version( "0.0.0.0" ) );
// Create assembly and host evidence.
Console::WriteLine( "Adding assembly evidence." );
myEvidence->AddAssembly( "SN01" );
myEvidence->AddAssembly( gcnew Version( "0.0.0.0" ) );
myEvidence->AddAssembly( mSN );
Console::WriteLine( "Count of evidence items = {0}", myEvidence->Count );
Url^ url = gcnew Url( "http://www.treyresearch.com" );
Console::WriteLine( "Adding host evidence {0}", url );
myEvidence->AddHost( url );
PrintEvidence( myEvidence ).ToString();
Console::WriteLine( "Count of evidence items = {0}", myEvidence->Count );
Console::WriteLine( "\nCopy the evidence to an array using CopyTo, then display the array." );
array<Object^>^evidenceArray = gcnew array<Object^>(myEvidence->Count);
myEvidence->CopyTo( evidenceArray, 0 );
for each (Object^ obj in evidenceArray)
{
Console::WriteLine(obj->ToString());
}
Console::WriteLine( "\nDisplay the contents of the properties." );
Console::WriteLine( "Locked is the only property normally used by code." );
Console::WriteLine( "IsReadOnly, IsSynchronized, and SyncRoot properties are not normally used." );
Console::WriteLine( "\nThe default value for the Locked property = {0}", myEvidence->Locked );
Console::WriteLine( "\nGet the hashcode for the evidence." );
Console::WriteLine( "HashCode = {0}", myEvidence->GetHashCode() );
Console::WriteLine( "\nGet the type for the evidence." );
Console::WriteLine( "Type = {0}", myEvidence->GetType() );
Console::WriteLine( "\nMerge new evidence with the current evidence." );
array<Object^>^oa1 = {};
Site^ site = gcnew Site( "www.wideworldimporters.com" );
array<Object^>^oa2 = {url,site};
Evidence^ newEvidence = gcnew Evidence( oa1,oa2 );
myEvidence->Merge( newEvidence );
Console::WriteLine( "Evidence count = {0}", PrintEvidence( myEvidence ) );
Console::WriteLine( "\nRemove URL evidence." );
myEvidence->RemoveType( url->GetType() );
Console::WriteLine( "Evidence count is now: {0}", myEvidence->Count );
Console::WriteLine( "\nMake a copy of the current evidence." );
Evidence^ evidenceCopy = gcnew Evidence( myEvidence );
Console::WriteLine( "Count of new evidence items = {0}", evidenceCopy->Count );
Console::WriteLine( "Does the copy equal the current evidence? {0}", myEvidence->Equals( evidenceCopy ) );
Console::WriteLine( "\nClear the current evidence." );
myEvidence->Clear();
Console::WriteLine( "Count is now {0}", myEvidence->Count );
return myEvidence;
}
static int PrintEvidence( Evidence^ myEvidence )
{
int p = 0;
Console::WriteLine( "\nCurrent evidence = " );
if ( nullptr == myEvidence )
return 0;
IEnumerator^ list = myEvidence->GetEnumerator();
IEnumerator^ myEnum1 = list;
while ( myEnum1->MoveNext() )
{
Object^ obj = safe_cast<Object^>(myEnum1->Current);
Console::WriteLine( obj );
p++;
}
Console::WriteLine( "\n" );
return p;
}
// Convert a hexadecimal string to an array.
static array<Byte>^ HexsToArray( String^ sHexString )
{
array<Byte>^arr = gcnew array<Byte>(sHexString->Length / 2);
for ( int i = 0; i < sHexString->Length; i += 2 )
{
arr[ i / 2 ] = Byte::Parse( sHexString->Substring( i, 2 ), NumberStyles::HexNumber );
}
return arr;
}
};
// Main method.
int main()
{
try
{
Evidence_Example^ EvidenceTest = gcnew Evidence_Example;
bool ret = EvidenceTest->CreateEvidence();
if ( ret )
{
Console::WriteLine( "Evidence successfully created." );
}
else
{
Console::WriteLine( "Evidence creation failed." );
}
EvidenceTest->DemonstrateEvidenceMembers();
}
catch ( Exception^ e )
{
Console::WriteLine( e );
Environment::ExitCode = 101;
}
}
using System;
using System.Collections;
using System.Security;
using System.Security.Policy;
using System.Security.Permissions;
using System.Globalization;
public class Evidence_Example
{
public bool CreateEvidence()
{
bool retVal = true;
try
{
// Create empty evidence using the default contructor.
Evidence ev1 = new Evidence();
Console.WriteLine("Created empty evidence with the default constructor.");
// Constructor used to create null host evidence.
Evidence ev2a = new Evidence(null);
Console.WriteLine("Created an Evidence object with null host evidence.");
// Constructor used to create host evidence.
Url url = new Url("http://www.treyresearch.com");
Console.WriteLine("Adding host evidence " + url.ToString());
ev2a.AddHost(url);
Evidence ev2b = new Evidence(ev2a);
Console.WriteLine("Copy evidence into new evidence");
IEnumerator enum1 = ev2b.GetHostEnumerator();
enum1.MoveNext();
Console.WriteLine(enum1.Current.ToString());
// Constructor used to create both host and assembly evidence.
Object [] oa1 = {};
Site site = new Site("www.wideworldimporters.com");
Object [] oa2 = { url, site };
Evidence ev3a = new Evidence(oa1, oa2);
enum1 = ev3a.GetHostEnumerator();
IEnumerator enum2 = ev3a.GetAssemblyEnumerator();
enum2.MoveNext();
Object obj1 = enum2.Current;
enum2.MoveNext();
Console.WriteLine("URL = " + obj1.ToString() + " Site = " + enum2.Current.ToString());
// Constructor used to create null host and null assembly evidence.
Evidence ev3b = new Evidence(null, null);
Console.WriteLine("Create new evidence with null host and assembly evidence");
}
catch (Exception e)
{
Console.WriteLine("Fatal error: {0}", e.ToString());
return false;
}
return retVal;
}
public Evidence DemonstrateEvidenceMembers()
{
Evidence myEvidence = new Evidence();
string sPubKeyBlob = "00240000048000009400000006020000" +
"00240000525341310004000001000100" +
"19390E945A40FB5730204A25FA5DC4DA" +
"B18688B412CB0EDB87A6EFC50E2796C9" +
"B41AD3040A7E46E4A02516C598678636" +
"44A0F74C39B7AB9C38C01F10AF4A5752" +
"BFBCDF7E6DD826676AD031E7BCE63393" +
"495BAD2CA4BE03B529A73C95E5B06BE7" +
"35CA0F622C63E8F54171BD73E4C8F193" +
"CB2664163719CA41F8159B8AC88F8CD3";
Byte[] pubkey = HexsToArray(sPubKeyBlob);
// Create a strong name.
StrongName mSN = new StrongName(new StrongNamePublicKeyBlob(pubkey), "SN01", new Version("0.0.0.0"));
// Create assembly and host evidence.
Console.WriteLine("Adding assembly evidence.");
myEvidence.AddAssembly("SN01");
myEvidence.AddAssembly(new Version("0.0.0.0"));
myEvidence.AddAssembly(mSN);
Console.WriteLine("Count of evidence items = " + myEvidence.Count.ToString());
Url url = new Url("http://www.treyresearch.com");
Console.WriteLine("Adding host evidence " + url.ToString());
myEvidence.AddHost(url);
PrintEvidence(myEvidence).ToString();
Console.WriteLine("Count of evidence items = " + myEvidence.Count.ToString());
Console.WriteLine("\nCopy the evidence to an array using CopyTo, then display the array.");
object[] evidenceArray = new object[myEvidence.Count];
myEvidence.CopyTo(evidenceArray, 0);
foreach (object obj in evidenceArray)
{
Console.WriteLine(obj.ToString());
}
Console.WriteLine("\nDisplay the contents of the properties.");
Console.WriteLine("Locked is the only property normally used by code.");
Console.WriteLine("IsReadOnly, IsSynchronized, and SyncRoot properties are not normally used.");
Console.WriteLine("\nThe default value for the Locked property = " + myEvidence.Locked.ToString());
Console.WriteLine("\nGet the hashcode for the evidence.");
Console.WriteLine("HashCode = " + myEvidence.GetHashCode().ToString());
Console.WriteLine("\nGet the type for the evidence.");
Console.WriteLine("Type = " + myEvidence.GetType().ToString());
Console.WriteLine("\nMerge new evidence with the current evidence.");
Object [] oa1 = {};
Site site = new Site("www.wideworldimporters.com");
Object [] oa2 = { url, site };
Evidence newEvidence = new Evidence(oa1, oa2);
myEvidence.Merge(newEvidence);
Console.WriteLine("Evidence count = " + PrintEvidence(myEvidence).ToString());
Console.WriteLine("\nRemove URL evidence.");
myEvidence.RemoveType(url.GetType());
Console.WriteLine("Evidence count is now: " + myEvidence.Count.ToString());
Console.WriteLine("\nMake a copy of the current evidence.");
Evidence evidenceCopy = new Evidence(myEvidence);
Console.WriteLine("Count of new evidence items = " + evidenceCopy.Count);
Console.WriteLine("Does the copy equal the current evidence? " + myEvidence.Equals(evidenceCopy));
Console.WriteLine("\nClear the current evidence.");
myEvidence.Clear();
Console.WriteLine("Count is now " + myEvidence.Count.ToString());
return myEvidence;
}
public static int PrintEvidence(Evidence myEvidence)
{
int p = 0;
Console.WriteLine("\nCurrent evidence = ");
if (null == myEvidence) return 0;
IEnumerator list = myEvidence.GetEnumerator();
while (list.MoveNext())
{
Console.WriteLine(list.Current.ToString());
}
Console.WriteLine("\n");
return p;
}
// Convert a hexidecimal string to an array.
public static byte[] HexsToArray(string sHexString)
{
Byte[] array = new Byte[sHexString.Length/2];
for (int i = 0; i < sHexString.Length; i += 2)
{
array[i / 2] = Byte.Parse(sHexString.Substring(i, 2), NumberStyles.HexNumber);
}
return array;
}
// Main method.
public static void Main()
{
try
{
Evidence_Example EvidenceTest = new Evidence_Example();
bool ret = EvidenceTest.CreateEvidence();
if (ret)
{
Console.WriteLine("Evidence successfully created.");
}
else
{
Console.WriteLine("Evidence creation failed.");
}
EvidenceTest.DemonstrateEvidenceMembers();
}
catch(Exception e)
{
Console.WriteLine(e.ToString());
Environment.ExitCode = 101;
}
}
}
Imports System.Collections
Imports System.Security
Imports System.Security.Policy
Imports System.Security.Permissions
Imports System.Globalization
Public Class Evidence_Example
Public Function CreateEvidence() As Boolean
Dim retVal As Boolean = True
Try
' Create empty evidence using the default contructor.
Dim ev1 As New Evidence
Console.WriteLine("Created empty evidence with the default constructor.")
' Constructor used to create null host evidence.
Dim ev2a As New Evidence(Nothing)
Console.WriteLine("Created an Evidence object with null host evidence.")
' Constructor used to create host evidence.
Dim url As New Url("http://www.treyresearch.com")
Console.WriteLine(("Adding host evidence " & url.ToString()))
ev2a.AddHost(url)
Dim ev2b As New Evidence(ev2a)
Console.WriteLine("Copy evidence into new evidence")
Dim enum1 As IEnumerator = ev2b.GetHostEnumerator()
enum1.MoveNext()
Console.WriteLine(enum1.Current.ToString())
' Constructor used to create both host and assembly evidence.
Dim oa1() As [Object]
Dim site As New Site("www.wideworldimporters.com")
Dim oa2 As [Object]() = {url, site}
Dim ev3a As New Evidence(oa1, oa2)
enum1 = ev3a.GetHostEnumerator()
Dim enum2 As IEnumerator = ev3a.GetAssemblyEnumerator()
enum2.MoveNext()
Dim obj1 As [Object] = enum2.Current
enum2.MoveNext()
Console.WriteLine(("URL = " & obj1.ToString() & " Site = " & enum2.Current.ToString()))
' Constructor used to create null host and null assembly evidence.
Dim ev3b As New Evidence(Nothing, Nothing)
Console.WriteLine("Create new evidence with null host and assembly evidence")
Catch e As Exception
Console.WriteLine("Fatal error: {0}", e.ToString())
Return False
End Try
Return retVal
End Function 'CreateEvidence
Public Function DemonstrateEvidenceMembers() As Evidence
Dim myEvidence As New Evidence
Dim sPubKeyBlob As String = "00240000048000009400000006020000" & "00240000525341310004000001000100" & "19390E945A40FB5730204A25FA5DC4DA" & "B18688B412CB0EDB87A6EFC50E2796C9" & "B41AD3040A7E46E4A02516C598678636" & "44A0F74C39B7AB9C38C01F10AF4A5752" & "BFBCDF7E6DD826676AD031E7BCE63393" & "495BAD2CA4BE03B529A73C95E5B06BE7" & "35CA0F622C63E8F54171BD73E4C8F193" & "CB2664163719CA41F8159B8AC88F8CD3"
Dim pubkey As [Byte]() = HexsToArray(sPubKeyBlob)
' Create a strong name.
Dim mSN As New StrongName(New StrongNamePublicKeyBlob(pubkey), "SN01", New Version("0.0.0.0"))
' Create assembly and host evidence.
Console.WriteLine("Adding assembly evidence.")
myEvidence.AddAssembly("SN01")
myEvidence.AddAssembly(New Version("0.0.0.0"))
myEvidence.AddAssembly(mSN)
Console.WriteLine(("Count of evidence items = " & myEvidence.Count.ToString()))
Dim url As New Url("http://www.treyresearch.com")
Console.WriteLine(("Adding host evidence " & url.ToString()))
myEvidence.AddHost(url)
PrintEvidence(myEvidence).ToString()
Console.WriteLine(("Count of evidence items = " & myEvidence.Count.ToString()))
Console.WriteLine(ControlChars.Lf & "Copy the evidence to an array using CopyTo, then display the array.")
Dim evidenceArray(myEvidence.Count - 1) As Object
myEvidence.CopyTo(evidenceArray, 0)
Dim obj As Object
For Each obj In evidenceArray
Console.WriteLine(obj.ToString())
Next obj
Console.WriteLine(ControlChars.Lf & "Display the contents of the properties.")
Console.WriteLine("Locked is the only property normally used by code.")
Console.WriteLine("IsReadOnly, IsSynchronized, and SyncRoot properties are not normally used.")
Console.WriteLine((ControlChars.Lf & "The default value for the Locked property = " & myEvidence.Locked.ToString()))
Console.WriteLine(ControlChars.Lf & "Get the hashcode for the evidence.")
Console.WriteLine(("HashCode = " & myEvidence.GetHashCode().ToString()))
Console.WriteLine(ControlChars.Lf & "Get the type for the evidence.")
Console.WriteLine(("Type = " & myEvidence.GetType().ToString()))
Console.WriteLine(ControlChars.Lf & "Merge new evidence with the current evidence.")
Dim oa1() As [Object]
Dim site As New Site("www.wideworldimporters.com")
Dim oa2 As [Object]() = {url, site}
Dim newEvidence As New Evidence(oa1, oa2)
myEvidence.Merge(newEvidence)
Console.WriteLine(("Evidence count = " & PrintEvidence(myEvidence).ToString()))
Console.WriteLine(ControlChars.Lf & "Remove URL evidence.")
myEvidence.RemoveType(url.GetType())
Console.WriteLine(("Evidence count is now: " & myEvidence.Count.ToString()))
Console.WriteLine(ControlChars.Lf & "Make a copy of the current evidence.")
Dim evidenceCopy As New Evidence(myEvidence)
Console.WriteLine(("Count of new evidence items = " & evidenceCopy.Count.ToString()))
Console.WriteLine(("Does the copy equal the current evidence? " & myEvidence.Equals(evidenceCopy)))
Console.WriteLine(ControlChars.Lf & "Clear the current evidence.")
myEvidence.Clear()
Console.WriteLine(("Count is now " & myEvidence.Count.ToString()))
Return myEvidence
End Function 'DemonstrateEvidenceMembers
Public Shared Function PrintEvidence(ByVal myEvidence As Evidence) As Integer
Dim p As Integer = 0
Console.WriteLine(ControlChars.Lf & "Current evidence = ")
If myEvidence Is Nothing Then
Return 0
End If
Dim list As IEnumerator = myEvidence.GetEnumerator()
Dim obj As Object
While list.MoveNext()
Console.WriteLine(list.Current.ToString())
p = p + 1
End While
Console.WriteLine(ControlChars.Lf)
Return p
End Function 'PrintEvidence
' Convert a hexidecimal string to an array.
Public Shared Function HexsToArray(ByVal sHexString As String) As Byte()
Dim array(sHexString.Length / 2) As [Byte]
Dim i As Integer
For i = 0 To sHexString.Length - 2 Step 2
array((i / 2)) = [Byte].Parse(sHexString.Substring(i, 2), NumberStyles.HexNumber)
Next i
Return array
End Function 'HexsToArray
' Main method.
Public Shared Sub Main()
Try
Dim EvidenceTest As New Evidence_Example
Dim ret As Boolean = EvidenceTest.CreateEvidence()
If ret Then
Console.WriteLine("Evidence successfully created.")
Else
Console.WriteLine("Evidence creation failed.")
End If
EvidenceTest.DemonstrateEvidenceMembers()
Catch e As Exception
Console.WriteLine(e.ToString())
Environment.ExitCode = 101
End Try
End Sub
End Class
注解
常见的证据形式包括代码起源的签名和位置,但可能是任何内容。 安全策略识别的任何类型的对象都表示证据。
安全策略由代码组组成;特定程序集 (用于授予安全权限的基本代码单元) 是代码组的成员(如果它满足代码组的成员身份条件)。 证据是成员资格条件用于确定程序集所属的代码组的策略的输入集。
该 Evidence 类是一个集合 (查看 ICollection) ,该集合包含一组表示证据的对象。 此类包含两组与证据来源相对应:主机证据和程序集证据。
在评估代码权限时,策略可以从两个不同的源获取证据。
Host evidence
由主机提供,只能由已授予权限的 ControlEvidence 主机提供。 通常,这是程序集上代码和数字签名的来源的证据。 有关起源的证据通常包括Url和SiteZone证据。 签名是指软件发布者 (AuthentiCode X.509v3 签名) 和强名称标识。 这两种类型的基于数字签名的标识都内置在程序集中,但必须由主机验证并传递给策略;加载时,安全系统会验证签名。 然后,系统会创建适当的证据,并仅在相应的签名有效时将其传递给策略。Assembly evidence
是程序集本身的一部分。 开发人员或管理员可以将自定义证据附加到程序集,以扩展策略的证据集。 程序集证据只能在程序集生成时添加,在程序集签名之前发生。 安全系统的默认策略忽略程序集提供的证据,但策略可以扩展以接受它。
构造函数
Evidence() |
初始化 Evidence 类的新的空实例。 |
Evidence(Evidence) |
从现有证据的浅表副本初始化 Evidence 类的新实例。 |
Evidence(EvidenceBase[], EvidenceBase[]) |
依据多个主机和程序集证据集初始化 Evidence 类的新实例。 |
Evidence(Object[], Object[]) |
已过时。
已过时。
已过时。
依据多个主机和程序集证据集初始化 Evidence 类的新实例。 |
属性
Count |
已过时。
已过时。
已过时。
获取证据集中证据对象的数目。 |
IsReadOnly |
获取一个值,该值指示证据集是否为只读。 |
IsSynchronized |
获取一个值,该值指示证据集是否线程安全。 |
Locked |
获取或设置一个值,该值指示证据是否是锁定的。 |
SyncRoot |
获取同步根。 |
方法
AddAssembly(Object) |
已过时。
已过时。
已过时。
将指定的程序集证据添加到证据集。 |
AddAssemblyEvidence<T>(T) |
将指定类型的证据对象添加到程序集提供的证据列表。 |
AddHost(Object) |
已过时。
已过时。
已过时。
将主机提供的指定证据添加到证据集。 |
AddHostEvidence<T>(T) |
将指定类型的主机证据添加到主机证据集合。 |
Clear() |
从证据集中移除主机和程序集证据。 |
Clone() |
返回此证据对象的重复副本。 |
CopyTo(Array, Int32) |
已过时。
已过时。
已过时。
将证据对象复制到 Array。 |
Equals(Object) | |
Equals(Object) |
确定指定对象是否等于当前对象。 (继承自 Object) |
GetAssemblyEnumerator() |
枚举程序集提供的证据。 |
GetAssemblyEvidence<T>() |
从集合中获取指定类型的程序集证据。 |
GetEnumerator() |
已过时。
已过时。
已过时。
枚举集合中的所有证据,包括由主机提供的证据和由程序集提供的证据。 |
GetHashCode() |
获取 Evidence 对象的哈希代码,此代码适合在哈希算法和数据结构(例如哈希表)中使用。 |
GetHashCode() |
作为默认哈希函数。 (继承自 Object) |
GetHostEnumerator() |
枚举由主机提供的证据。 |
GetHostEvidence<T>() |
从集合中获取指定类型的主机证据。 |
GetType() |
获取当前实例的 Type。 (继承自 Object) |
MemberwiseClone() |
创建当前 Object 的浅表副本。 (继承自 Object) |
Merge(Evidence) |
将指定的证据集合并到当前证据集。 |
RemoveType(Type) |
从主机和程序集枚举中移除给定类型的证据。 |
ToString() |
返回表示当前对象的字符串。 (继承自 Object) |
扩展方法
Cast<TResult>(IEnumerable) |
将 IEnumerable 的元素强制转换为指定的类型。 |
OfType<TResult>(IEnumerable) |
根据指定类型筛选 IEnumerable 的元素。 |
AsParallel(IEnumerable) |
启用查询的并行化。 |
AsQueryable(IEnumerable) |
将 IEnumerable 转换为 IQueryable。 |