gpt4 book ai didi

c# - 我如何将静态字符串与对象类型关联 C#

转载 作者:太空狗 更新时间:2023-10-29 23:14:12 27 4
gpt4 key购买 nike

我有一个查询 rest API 的方法,我在其中执行从 JSON 到对象的映射。由于我传递给此方法的查询字符串和对象类型始终必须匹配,因此我想将查询字符串作为静态字符串包含在内。

public class Root
{
public static string Query;
}

public class RootObject : Root, IRootObject
{
public D d { get; set; }
public static new string Query = "AccountSet";
}

public interface IRootObject
{
D d { get; }
}

public class RestClass
{
public void Connect<T>() where T : Root, IRootObject
{
T.Query <-- fails (not actual code. Just to show my problem)
}
}

最佳答案

您可以为此使用自定义属性:

[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)]
public sealed class QueryAttribute : Attribute
{
public string QueryString { get; private set; }

public QueryAttribute(string queryString)
{
QueryString = queryString;
}

public static string GetQueryStringForType(Type type)
{
var queryAttr = type.GetCustomAttributes(typeof(QueryAttribute), false)
.FirstOrDefault() as QueryAttribute;

return queryAttr != null ? queryAttr.QueryString : null;
}
}

在你的类(class)中使用它:

[Query("AccountSet")]
public class RootObject : Root, IRootObject
{
public D d { get; set; }
}

然后像这样检索值:

public void Connect<T>() where T : Root, IRootObject
{
var query = QueryAttribute.GetQueryStringForType(typeof(T));
}

关于c# - 我如何将静态字符串与对象类型关联 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28877317/

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