我正在使用C#来编写基本的属性/值映射类。
我希望能够定位对象上的特定成员,然后通过lambda表达式指定与该成员有关的各种事物。
我们的想法是使用静态方法构建一个新的映射:
var myMapping = Mapping<TObject>.New(o => o.MyProperty).Read(GetString);
在这个例子中,TObject是我要映射其属性的对象的类型,New(...)以TObject的'MyProperty'成员为目标,Read(...)定义一个表达式,该表达式返回一个值是'MyProperty'的相同类型。
所以我们现在有了一个'Mapping'对象,它知道:
然后,我们可以将逻辑围绕如何将该成员设置为该值以及“Mapper”的继承者。例如某种类型的映射可能想要“验证”读取的值,只有在它们有效时才设置MyProperty。
然后您将使用您的映射:
myMapping.Read(myTObject);
其中'myTObject'是'TObject'类型的实例。
我在模拟像RhinoMock这样的库中看到了这类事情的实现,你可以在这些库中定位特定成员并为它们设置选项。
有人可以向我提供一个如何实现这一目标的例子,或者至少告诉我我的头脑是否在云端?
答案 0 :(得分:0)
您在谈论Key,Value对吗? Linq已经实现了Dictionary<T1, T2>
类型。第一种是键,第二种是值。
你可以这样做:
Dictionary<TObject, string> myMapping = new Dictionary(TObject, string);
myMapping.Add(new TObject(), "some string");
阅读它将是:
string someString = myMapping[tObjectInstance].Value;
您可以在此处详细了解字典类及其实现方法:http://msdn.microsoft.com/en-us/library/xfhwa508.aspx