你能用“where"吗?在 c# 中需要一个属性?

6

本文介绍了你能用“where"吗?在 c# 中需要一个属性?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我想做一个只接受可序列化类的泛型类,可以用 where 约束来完成吗?

I want to make a generic class that accepts only serializable classes, can it be done with the where constraint?

我正在寻找的概念是这样的:

The concept I'm looking for is this:

public class MyClass<T> where T : //[is serializable/has the serializable attribute]

推荐答案

不,恐怕不是.您可以对约束做的唯一事情是:

Nope, I'm afraid not. The only things you can do with constraints are:

  • where T : class - T 必须是引用类型
  • where T : struct - T 必须是不可为空的值类型
  • where T : SomeClass - T 必须是 SomeClass 或派生自它
  • where T : ISomeInterface - T 必须是 ISomeInterface 或实现它
  • where T : new() - T 必须有一个公共的无参数构造函数
  • where T : class - T must be a reference type
  • where T : struct - T must be a non-nullable value type
  • where T : SomeClass - T must be SomeClass or derive from it
  • where T : ISomeInterface - T must be ISomeInterface or implement it
  • where T : new() - T must have a public parameterless constructor

各种组合都是可行的,但不是全部.与属性无关.

Various combinations are feasible, but not all. Nothing about attributes.

这篇关于你能用“where"吗?在 c# 中需要一个属性?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

C# 中的多播委托奇怪行为?
Multicast delegate weird behavior in C#?(C# 中的多播委托奇怪行为?)...
2023-11-11 C#/.NET开发问题
6

参数计数与调用不匹配?
Parameter count mismatch with Invoke?(参数计数与调用不匹配?)...
2023-11-11 C#/.NET开发问题
26

如何将代表存储在列表中
How to store delegates in a List(如何将代表存储在列表中)...
2023-11-11 C#/.NET开发问题
6

代表如何工作(在后台)?
How delegates work (in the background)?(代表如何工作(在后台)?)...
2023-11-11 C#/.NET开发问题
5

没有 EndInvoke 的 C# 异步调用?
C# Asynchronous call without EndInvoke?(没有 EndInvoke 的 C# 异步调用?)...
2023-11-11 C#/.NET开发问题
2

Delegate.CreateDelegate() 和泛型:错误绑定到目标方法
Delegate.CreateDelegate() and generics: Error binding to target method(Delegate.CreateDelegate() 和泛型:错误绑定到目标方法)...
2023-11-11 C#/.NET开发问题
14