gpt4 book ai didi

c# - 绑定(bind)到当前项目中未声明的属性

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

我有以下示例代码:

static class Test
{
public WordBase FindWord( String word )
{
return (WordBase)Data.Vocabulary.Where( a => a.Name == word ).FirstOrDefault();
}
}

static class Data
{
public List<WordBase> Vocabulary = new List<WordBase>();
}

class WordBase
{
public UInt32 Id { get; protected set; }
public String Name { get; protected set; }

public WordBase( UInt32 id, String name )
{
Id = id;
Name = name;
}
}

我正在寻找的是将 Data 类移动到将通过反射加载的外部程序集中。这样做的原因是我正在编写一个基于文本的冒险游戏创建器,它允许将多个情节链接在一起,其中每个程序集将包含每个情节的游戏数据和逻辑。

我遇到的问题是 FindWord 方法将失败,因为当前项目中不存在 Data.Vocabulary;请记住,它已被移出到外部加载的程序集中,因此不会有任何强类型引用。

我认为我需要通过接口(interface)或抽象类创建某种契约,以便 FindWord 方法可以绑定(bind)到 Data.Vocabulary属性(property)。

推荐的做法是什么?

最佳答案

不要使用静态类。

public interface IData
{
IEnumerable<IWord> Vocabulary { get; }
}

public interface ITest
{
IWord FindWord(string word);
}

使用接口(interface)允许与实现分离,因此调用者不需要知道实现细节。

这样您就可以在运行时加载包含定义的程序集,而依赖于接口(interface)的代码将不会关心。

关于c# - 绑定(bind)到当前项目中未声明的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18148388/

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