导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

MissingFieldException 类

2013/12/13

试图动态访问不存在的字段时引发的异常。

System.Object
  System.Exception
    System.SystemException
      System.MemberAccessException
        System.MissingMemberException
          System.MissingFieldException

Namespace:  System
程序集:  mscorlib(位于 mscorlib.dll 中)

public class MissingFieldException : MissingMemberException

MissingFieldException 类型公开以下成员。

  名称说明
公共方法MissingFieldException()初始化 MissingFieldException 类的新实例。
公共方法MissingFieldException(String)使用指定错误消息初始化 MissingFieldException 类的新实例。
公共方法MissingFieldException(String, Exception)使用指定错误消息和对导致此异常的内部异常的引用来初始化 MissingFieldException 类的新实例。
返回顶部

  名称说明
公共属性Data获取一个提供用户定义的其他异常信息的键/值对的集合。 (从 Exception 继承。)
公共属性HelpLink获取或设置指向此异常所关联帮助文件的链接。 (从 Exception 继承。)
公共属性HResult获取或设置 HRESULT(一个分配给特定异常的编码数字值)。 (从 Exception 继承。)
公共属性InnerException获取导致当前异常的 Exception 实例。 (从 Exception 继承。)
公共属性Message获取显示类名、成员名和缺少成员签名的文本字符串。 (从 MissingMemberException 继承。)
公共属性Source获取或设置导致错误的应用程序或对象的名称。 (从 Exception 继承。)
公共属性StackTrace获取在引发当前异常时调用堆栈上帧的字符串表示形式。 (从 Exception 继承。)
返回顶部

  名称说明
公共方法Equals(Object)确定指定的 Object 是否等于当前的 Object (从 Object 继承。)
受保护的方法Finalize允许 Object 在垃圾回收器回收该对象之前尝试释放资源并执行其他清理操作。 (从 Object 继承。)
公共方法GetBaseException当在派生类中重写时,返回 Exception,它是一个或多个并发的异常的根源。 (从 Exception 继承。)
公共方法GetHashCode用作特定类型的哈希函数。 (从 Object 继承。)
公共方法GetType获取当前实例的运行时类型。 (从 Exception 继承。)
受保护的方法MemberwiseClone创建当前 Object 的浅表副本。 (从 Object 继承。)
公共方法ToString创建并返回当前异常的字符串表示形式。 (从 Exception 继承。)
返回顶部

通常,如果代码试图访问不存在的类成员,会生成编译错误。MissingFieldException 则设计来处理这样一种情况:试图动态访问程序集中已重命名或已删除的字段,而该程序集并不是按其强名称来引用的。当相关程序集中的代码尝试访问已经修改的程序集中已不存在的字段时,就会引发 MissingFieldException

MissingFieldException 使用值为 0x80131511 的 HRESULT COR_E_MISSINGFIELD。

有关 MissingFieldException 实例的初始属性值列表,请参见 MissingFieldException 构造函数。

此示例演示在您尝试使用反射来调用不存在的方法和访问不存在的字段时所发生的情况。应用程序通过捕捉 MissingMethodExceptionMissingFieldExceptionMissingMemberException 来恢复。

说明注意:

要运行此示例,请参见生成具有静态 Windows Phone TextBlock 控件的示例


using System;
using System.Reflection;

public class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {

      try
      {
         // Attempt to call a static DoSomething method defined in the Example class.
         // However, because the Example class does not define this field, 
         // a MissingFieldException is thrown.
         typeof(Example).InvokeMember("DoSomething", BindingFlags.Static |
             BindingFlags.InvokeMethod, null, null, null);
      }
      catch (MissingMethodException e)
      {
         // Show the user that the DoSomething method cannot be called.
         outputBlock.Text += String.Format("Unable to call the DoSomething method: {0}", e.Message) + "\n";
      }

      try
      {
         // Attempt to access a static AField field defined in the Example class.
         // However, because the Example class does not define this field, 
         // a MissingFieldException is thrown.
         typeof(Example).InvokeMember("AField", BindingFlags.Static | BindingFlags.SetField,
             null, null, new Object[] { 5 });
      }
      catch (MissingFieldException e)
      {
         // Show the user that the AField field cannot be accessed.
         outputBlock.Text += String.Format("Unable to access the AField field: {0}", e.Message) + "\n";
      }

      try
      {
         // Attempt to access a static AnotherField field defined in the Example class.
         // However, because the Example class does not define this field, 
         // a MissingFieldException is thrown.
         typeof(Example).InvokeMember("AnotherField", BindingFlags.Static |
             BindingFlags.GetField, null, null, null);
      }
      catch (MissingMemberException e)
      {
         // Notice that this code is catching MissingMemberException which is the  
         // base class of MissingMethodException and MissingFieldException.
         // Show the user that the AnotherField field cannot be accessed.
         outputBlock.Text += String.Format("Unable to access the AnotherField field: {0}", e.Message) + "\n";
      }
   }
}
// This code example produces the following output:
//
// Unable to call the DoSomething method: Method 'App.DoSomething' not found.
// Unable to access the AField field: Field 'App.AField' not found.
// Unable to access the AnotherField field: Field 'App.AnotherField' not found.


Windows Phone OS

受以下版本支持: 8.0, 7.1, 7.0

Windows Phone

此类型的所有公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Microsoft 正在进行一项网上调查,以了解您对 MSDN 网站的意见。 如果您选择参加,我们将会在您离开 MSDN 网站时向您显示该网上调查。

是否要参加?
显示:
© 2014 Microsoft