gpt4 book ai didi

c# - 是否可以将某些行为绑定(bind)到类的任何动态属性?

转载 作者:太空宇宙 更新时间:2023-11-03 18:07:46 27 4
gpt4 key购买 nike

我想像下面这样定义一个动态类:

dynamic LocalizationHelper;

string s = LocalizationHelper.View1_Question;

它应该完成以下任务:

string s = Resource.ResourceManager.GetString("View1_Question", CultureInfo.GetCultureInfoByIetfLanguageTag(Config.Language)

有没有可能实现类似的东西?

ps:我不能简单地做 Resource.View1_Question 因为我已经设置了资源不生成用于执行此操作的 c# 代码。而且我对一般解决方案也很感兴趣。不仅用于本地化。

最佳答案

覆盖 DynamicObject并实现 TryGetMember

用法

var s = LocalizationHelper.Instance.View1_Question; 
Console.WriteLine(s);

动态对象

class LocalizationHelper:DynamicObject
{
static private dynamic inst = null;
public static dynamic Instance {
get {
return inst ?? (inst = new LocalizationHelper());
}
}

public override bool TryGetMember(
GetMemberBinder binder, out object result)
{
string name = binder.Name.ToLower();

result = Resource.ResourceManager.GetString(name);
return true;
}
}

关于c# - 是否可以将某些行为绑定(bind)到类的任何动态属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23385643/

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