将泛型类映射到复杂类型

本文关键字:复杂 类型 映射 泛型类 | 更新日期: 2023-09-27 18:03:27

是否可以将泛型类映射到复杂类型?我有一个小类,它有3个属性-字符串,int和泛型,并希望将字符串和int(字符串实际上是序列化的泛型类型)映射为复杂类型。

我认为这是不可能的,因为泛型类"FQDN"是MyGenericClass<somclass>,而复杂类型的概念类型只是MyGenericClass。是否有聪明的解决方案,或者我必须为泛型类的每次使用定义ComplexType ?

将泛型类映射到复杂类型

我不知道我是否正确地理解了您,但是您为什么不通过覆盖转换操作符来使用自定义强制转换呢?在下面的示例中,我将泛型复杂类隐式地强制转换为非泛型类。

阅读更多@我如何为我的类提供自定义铸造支持?

public class ClassComplex<T> 
{
    public T MyGenericValue { get; set; }
    public string MyStringValue { get; set; }
    public int MyIntValue { get; set; }
    public static implicit operator ClassComplex(ClassComplex<T> a)
    {
        return new ClassComplex() { MyIntValue = a.MyIntValue , MyStringValue = a.MyStringValue };
    }
}
public class ClassComplex
{
    public string MyStringValue { get; set; }
    public int MyIntValue { get; set; }
}
public class Test
{
    public Test()
    {
        ClassComplex<int> ccg = new ClassComplex<int>();
        ccg.MyGenericValue = 1;
        ccg.MyIntValue = 2;
        ccg.MyStringValue = "3";
        ClassComplex cc = ccg;
    }
}