gpt4 book ai didi

c# 转换为从类型名获取的类型作为字符串

转载 作者:行者123 更新时间:2023-11-30 20:13:56 25 4
gpt4 key购买 nike

我想解决我的 WCF 服务层无法处理这样的通用方法这一事实:

public void SaveOrUpdateDomainObject<T>(T domainObject)
{
domainRoot.SaveDomainObject<T>(domainObject);
}

所以我构建了这个变通方法

public void SaveOrUpdateDomainObject(object domainObject, string typeName)
{
Type T = Type.GetType(typeName);
var o = (typeof(T))domainObject;
domainRoot.SaveDomainObject<typeof(T)>(o);
}

问题是这不会以某种方式编译。

我认为这是我没有完全理解两者之间区别的结果

  • T型我相信这是一个“Type”类型的对象

  • typeof(T) 的结果我相信这会导致 T 类型的非对象类型版本(我不知道如何准确地说)

最佳答案

您不需要 typeName:您必须传递 Type 实例,或使用 object.GetType() 来检索对象运行时类型。

无论哪种情况,

MethodInfo genericSaveMethod = domainRoot.GetType().GetMethod("SaveDomainObject");
MethodInfo closedSaveMethod = genericSaveMethod .MakeGenericMethod(domainObject.GetType());
closedSaveMethod.Invoke(domainRoot, new object[] { domainObject });

关于c# 转换为从类型名获取的类型作为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1187319/

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