gpt4 book ai didi

c# - C# 扩展方法中的泛型约束

转载 作者:太空狗 更新时间:2023-10-30 00:01:45 26 4
gpt4 key购买 nike

我想提供一个扩展方法,但在调用它时有某种预防措施。

这是我的:

using System;

public class Test
{
public static void Main()
{
Person p = new Person();
p.IsValid();
}
}

public class Person
{
public string Name {get;set;}
}

public static class ValidationExtensions
{
public static void IsValid<T>(this T parent) where T : class
{
throw new NotImplementedException("test");
}
}

然而,这并不能阻止某人做 “这是一个愚蠢的想法”.IsValid();

我可以用接口(interface)、属性或基类来标记 Person 对象,但我不想这样做。有什么方法可以强制执行约束吗?

更新:我试图解释的是强制约束,例如通过命名空间,因为字符串调用 IsValid 是愚蠢的,我只想要某些模型类集

最佳答案

如果你想限制它只对 Person 实例(以及从 Person 派生的类型)起作用,你可以这样做:

public static void IsValid<T>(this T parent) where T : Person

但是,没有理由这样做,因为您也可以轻松地编写:

public static void IsValid(this Person parent)

关于c# - C# 扩展方法中的泛型约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11958424/

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