我的C#类是作为一股价值的持有者,这些价值现在被储存为地产。 为了提高易感性,Im将给它增加一个假肢,以便人们能够在那里储存他们想要的任何财产,而不必改变阶级法。 然而,我要保持落后的兼容性,允许旧财产仍然通过邮袋或原采集器获得。 页: 1 我希望以下两部法典具有同等效力。
properties.Config1 = value
properties["Config1"] = value
是否有人对这种变化的最佳做法有任何ti? 一种复杂情况是,一些现有采集器在其中具有验证/地质。
我的C#类是作为一股价值的持有者,这些价值现在被储存为地产。 为了提高易感性,Im将给它增加一个假肢,以便人们能够在那里储存他们想要的任何财产,而不必改变阶级法。 然而,我要保持落后的兼容性,允许旧财产仍然通过邮袋或原采集器获得。 页: 1 我希望以下两部法典具有同等效力。
properties.Config1 = value
properties["Config1"] = value
是否有人对这种变化的最佳做法有任何ti? 一种复杂情况是,一些现有采集器在其中具有验证/地质。
如果你想要保持落后的兼容性,你可以直接暴露理论。 相反,你可以执行“indexer,对您的类别进行一些检查,以确保在使用该辛迪克斯获得现有财产时,能够适用适当的逻辑。
如果你与索引员一起这样做,你可以选择将现有财产列入理论,或像现在这样离开,并在适当修饰作为钥匙时,将其现有的采集器和设计器从索引器的炉.中打出。
索引员可研究类似情况:
public object this[string key] {
get {
if (key == "Config1") return this.Config1;
else return propBag[key];
}
set {
if (key == "Config1") this.Config1 = value;
else propBag[key] = value;
}
}
当然,你可能想增加检查,以确保“<>代>>>>>代号/编码”栏中的关键存在,但这应该让你开始。
还有一点需要考虑:改变这一类别,增加财产袋行为,无论是作为公共字典还是索引员实施,都会改变阶级的界面。 因此,如果你改变这一类别,你必须获得
Use ExpandoObject
which is in fact a dictionary of string/object with a syntactic sugar:
ExpandoObject
。 这里是MSDN的样本:
dynamic employee = new ExpandoObject();
employee.Name = "John Smith";
employee.Age = 33;
foreach (var property in (IDictionary<String, Object>)employee)
{
Console.WriteLine(property.Key + ": " + property.Value);
}
// This code example produces the following output:
// Name: John Smith
// Age: 33
难道你要取代你对内部领域的提及吗? 你们需要实施某种逻辑,以检查是否存在着独裁的钥匙等,但这种变化的顶点就是这种。
我期待执行与我本人类似的东西,而后向和前瞻的兼容性都是问题。
我期望在我的财产袋内进行反思,以检查基类是否明确实施该财产,如果确实如此,财产包就是指基本执行情况。
例如,如果我的班子实施:
string MyClass.Name
然后在内部,财产袋将使用反射方式提出<代码>MyClass.Properties[“Name”]至MyClass.Name
的要求。
这可能造成问题。 例如,如果我的班级的使用者建立了“特设财产”编号<>MyClass.Properties[“Address”],然后我实施一个“违约财产”编码
这对环境来说是一个问题。
What is the use of default keyword in C#? Is it introduced in C# 3.0 ?
I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...
I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...
I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...
I have two EF entities. One has a property called HouseNumber. The other has two properties, one called StartHouseNumber and one called EndHouseNumber. I want to create a many to many association ...
How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...
Since I cannot order my dictionary, what is the best way of going about taking key value pairs and also maintaing an index?
Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...