gpt4 book ai didi

c# - 如何在 C# 中在运行时转换泛型值?

转载 作者:太空宇宙 更新时间:2023-11-03 23:42:52 24 4
gpt4 key购买 nike

我有一个类似的通用结构

public struct Range<T>

并且有两个属性,FromTo类型 T .

该结构还有一个成员,如:

public bool FromGreaterTo
{
get { return (bool)Comparer<T>.Default.Compare(From, To) > 0 };
}

我创建了一个 ValidationAttribute对于这个结构的属性。

IsValid 的覆盖中方法我知道它是类型 Range<>T is int?或其他。

如何动态转换 value参数(实际上是 Range<> 属性)所以我可以访问 FromGreaterTo成员(member)?

我已经试过了

private Range<T> Cast<T> (object valueToCast, T genericType)
{
return (Range<T>)valueToCast;
}

抛出一个异常,这个转换是无效的。

对此有什么想法或解决方法吗?

最佳答案

将 Range 设为一个类,并为其赋予一个抽象基类。

public abstract class Range
{
public abstract bool FromGreaterTo { get; }
}

public class Range<T> : Range
{
// existing Range<T> code
}

然后你可以投出你的Range<T>反对 Range对象并调用其 FromGreaterTo属性(property)。

关于c# - 如何在 C# 中在运行时转换泛型值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28457193/

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