gpt4 book ai didi

C# 将类型传递给要在 "is"语句中评估的方法?

转载 作者:行者123 更新时间:2023-11-30 14:41:01 25 4
gpt4 key购买 nike

我想做一些类似于下面列出的代码。基本上,我希望能够创建一个对象,但同时可以选择性地提出一个接口(interface)要求

public UserControl CreateObject(string objectName, Type InterfaceRequirement)
{
///// create object code abbreviated here
UserControl NewControl = createcontrol(objectName);

if (InterfaceRequirement == null || NewControl is InterfaceRequirement)
return NewControl;
else
throw new SystemException("Requested object does not implement required interface");

}

由于 InterfaceRequirement 的问题,上述代码无法编译

现在,我知道我可以用泛型来做到这一点:

public UserControl CreateObject<T>(string objectName)
{
///// create object code abbreviated here
UserControl NewControl = createcontrol(objectName);

if (NewControl is T)
return NewControl;
else
throw new SystemException("Requested object does not implement required interface");
}

但是对于泛型,接口(interface)要求不是可选的。我将类型作为参数传递的第一个代码示例无法编译,我看不到正确的语法。有谁知道不用泛型就可以做到这一点的方法,所以我可以将其设为可选?

最佳答案

您可以检查 typeof(InterfaceRequirement).IsAssignableFrom(theType) ?

否则,也许 theType.GetInterfaces() 并寻找它。

(其中 Type = NewControl.GetType();)

关于C# 将类型传递给要在 "is"语句中评估的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4688387/

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