繁体   English   中英

从 class 泛型获取 Static 属性,其中接口包含属性名称

[英]Get a Static property from a class generic, where Interface contains the property name

当您有 function 时:

public interface IHasName
{
    static string Name { get; }
}

//class{
public static string GetName<T>() where T : IHasName
{
    return T.Name;
}
//}

这不起作用,只有当我将 static 更改为 public 并创建一个new T()时。 用法必须是这样的:

public class Model: IHasName
{
    public static string Name => "Niek";
}

var name = GetName<Model>();

您是否有通过 Generic 使用 static 属性的解决方案。
提前致谢!

这是.NET 6 中的预览功能,并且可能会在 .NET 7 中正确发布:

public interface IHasName
{
    public static abstract string Name { get; }
}

public class Model : IHasName
{
    public static string Name => "Foo";
}

class Foo
{
    public static string GetName<T>() where T : IHasName
    {
        return T.Name;
    }
}

dotnetfiddle.net上查看。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM