Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有什么好办法可以在2017年创建通用属性实现吗?_C#_.net_Generics - Fatal编程技术网

C# 有什么好办法可以在2017年创建通用属性实现吗?

C# 有什么好办法可以在2017年创建通用属性实现吗?,c#,.net,generics,C#,.net,Generics,我在C#中查看了这个关于泛型的url,但我不清楚如何实现我心目中的泛型实现: 我需要为下游序列化创建一个自定义KeyValuePair类。下游json序列化将本机.net字典转换为通用javascript对象,这增加了复杂性和开销,因此我需要创建一个自定义KeyvaluePair类 但是,我希望使这个自定义KeyValuePair类成为泛型类,以便键或值可以是int或string。在C中实现这一点最优雅的方式是什么?以下代码不正确,但演示了我要查找的内容: public class KeyVa

我在C#中查看了这个关于泛型的url,但我不清楚如何实现我心目中的泛型实现:

我需要为下游序列化创建一个自定义KeyValuePair类。下游json序列化将本机.net字典转换为通用javascript对象,这增加了复杂性和开销,因此我需要创建一个自定义KeyvaluePair类

但是,我希望使这个自定义KeyValuePair类成为泛型类,以便键或值可以是int或string。在C中实现这一点最优雅的方式是什么?以下代码不正确,但演示了我要查找的内容:

public class KeyValuePair
{
    public <T> Key { get; set; }
    public <T> Value { get; set; }
}
公共类KeyValuePair
{
公钥{get;set;}
公共值{get;set;}
}

我在谷歌上搜索了一下,发现的唯一参考文献只有几年的历史,而且实现似乎有点粗糙。不确定2017年是否有更好的方法来实现这一点……

以下实施非常有效:

public class MyCustomKeyValuePair<T1, T2>
{
    public T1 Key { get; set; }
    public T2 Value { get; set; }
}
公共类MyCustomKeyValuePair
{
公共T1密钥{get;set;}
公共T2值{get;set;}
}

感谢@litelite的指针

紧跟在类名之后,然后在其余部分使用
T
,就像它是一个类型名一样,您可以查看自定义(de)序列化程序。这将是一个更好的方法,而不是这样做。这听起来真的像一个-你的基本问题听起来真的像是应该用内置的
字典
KeyValuePair
类型来解决-你应该问一下这一点-即详细说明你在使用这些类型时实际遇到了哪些序列化问题等,而不是在你的代码-你可以使用动态。但我还是没有得到你想要达到的目标。可能动态不是“最好”的解决方案,这比仅仅使用
系统.Collections.Generic.KeyValuePair
更有帮助吗?框架的内置
KayValuePair
是一个不可变的结构。这是我能看到的唯一区别。也许OP可以在这方面做一些改进。