gpt4 book ai didi

c# - Assembly.GetExecutingAssembly().CreateInstance 应该在这里抛出异常吗?

转载 作者:太空宇宙 更新时间:2023-11-03 20:31:51 25 4
gpt4 key购买 nike

我很新,所以这可能是一个“愚蠢的问题”,或者可能不适合在这里,请酌情提出建议。

我正在探索 C# 的一些功能,这周我正在研究反射。当我读到 http://msdn.microsoft.com/en-us/library/145sfyea.aspx 时我很困惑,据我所知,当我认为应该时,我没有得到 MissingMethodException(没有找到匹配的构造函数。)。

问题:这段代码应该在指定点抛出异常吗?

using System;
using System.Collections.Generic;
using System.IO;
using System.Reflection;

namespace Test
{
abstract class Vehicle
{
public string type { get; set; }
}

class Van : Vehicle
{
public Van()
{
System.Console.WriteLine("van!");
this.type = "van";
// ...
}
}

class Program
{
static void Main(string[] args)
{

List<String> things = new List<String>();
things.Add("Van");
things.Add("Car");

List<Vehicle> inventory = new List<Vehicle>();

foreach (String s in things)
{
Vehicle vehicle = Assembly.GetExecutingAssembly().CreateInstance("Test" + "." + s, true) as Vehicle;
if (vehicle != null)
{
inventory.Add(vehicle);
}
else
{
System.Console.WriteLine("Should an attempt to create an instance of"+ "Test" + "." + s+ " have thrown an exception? " );
};
}
Console.Read();
Console.Read();
}

}

}

最佳答案

没有。如果 Test.Car 类型存在,但没有公共(public)无参数构造函数,您将得到一个 MissingMethodException。如果根本找不到类型,则返回null;如果找到该类型,但找不到与您提供的参数列表相匹配的公共(public)构造函数,然后将抛出一个MissingMethodException

来自 MSDN:

Return Value
Type: System.Object
An instance of the specified type created with the default constructor; or null if typeName is not found.

参见 this ideone example .

关于c# - Assembly.GetExecutingAssembly().CreateInstance 应该在这里抛出异常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7151618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com