C# 对execute方法c使用替换#
我是C#新手,需要一些提示来解决这个问题: 我开始用C#一个Windows窗体应用程序开发一个应用程序(直到今年夏天,我在VisualFox工作了20年) 该UI是通用的(具有用于显示当前记录详细信息的网格和控件),并且是根据存储在Xml文件中的定义动态构建的 我想为每个表创建一个类,用于创建获取默认值、验证字段和记录等的方法。我为这个类使用了一个名称空间:BmiSqlTables 现在我需要在UI中添加记录以获取默认值、验证字段等。 我所面临的问题是用类似于Foxpro中的替换来替换switch-case语句,因为switch-case语句可能会变成一个非常大的语句(用于50个表)C# 对execute方法c使用替换#,c#,winforms,command-substitution,C#,Winforms,Command Substitution,我是C#新手,需要一些提示来解决这个问题: 我开始用C#一个Windows窗体应用程序开发一个应用程序(直到今年夏天,我在VisualFox工作了20年) 该UI是通用的(具有用于显示当前记录详细信息的网格和控件),并且是根据存储在Xml文件中的定义动态构建的 我想为每个表创建一个类,用于创建获取默认值、验证字段和记录等的方法。我为这个类使用了一个名称空间:BmiSqlTables 现在我需要在UI中添加记录以获取默认值、验证字段等。 我所面临的问题是用类似于Foxpro中的替换来替换switc
private void GetDefaultValue ( string TableName, string fieldName)
{
switch (tableName)
{
case "person":
BmiSqlTables.Person.GetDefaulValue( fieldName, valueType);
break;
case "client":
BmiSqlTables.Client.GetDefaulValue( fieldName, valueType);
break;
default:
break
}
}
namespace BmiSqlTables
{
public static class Person
{
public static dynamic GetDefaultValue( string fieldName, string valueType)
{
dynamic defaultValue = null;
switch (fieldName.toLower())
{
case "field1":
case "field2":
default:
switch (valueType.ToLower())
{
case "string":
case "varchar":
case "char:"
return "";
case "int":
return 0;
default:
return null;
}
.......
}
}
}
}
在Foxpro中,GetDefaultValue可以是这样的:
Function GetDefaultValue( tableName, fieldName, valueType)
return BmiSqlTable.&tableName..GetDefaultValue( fieldName, valueType)
对这个问题(和项目)的任何建议都将是非常宝贵的。
希望你能理解我的英语,以及我需要做的事情。
提前感谢。看看策略模式:我知道在FoxPro中,您会将值存储在一个表中,然后使用“替换(或其他任何方式)”将其取回。在.NET中也这样做。将这些值存储在一些外部源(DB或xml文件或其他文件)中,并在方法实现中读取它们 请记住,虽然FoxPro也是一个DB引擎,您可以在.NET中免费获得数据,但您需要选择要用于数据存储的技术 对于您的特定示例,一个包含名称/值对的简单xml文件就可以了。查阅 System.Xml.XDocument提供了与Xml文档交互的多种方式之一 编辑:
如果您仍然想在代码中保存数据而不是一些外部源,考虑使用一个/多个静态字典(System .Copy.Gu泛.Digy)代替您的巨大切换情况。希望您能理解……我需要做什么。-不,您想做什么?我想写一个通用的方法GETDebug值(在UI中),它不需要对tableName使用swich语句,也不需要在将来创建每个表名。并为tableName执行正确的方法GetDefaultValue(来自BmiSqlTables命名空间)我仅使用xml读取windows窗体定义(字段名称、标题、格式),当用户单击菜单选项(人员、客户、发票、订单等)时,这些窗体正在动态生成,用于存储数据我使用System.data.Common类,使用通用方法连接、更新数据库,无论是哪个提供程序。这是一个外部数据源的例子。您可能会考虑为此使用全DB引擎。什么样的地图适合你的应用是你自己的决定。无论如何,通过描述问题的方式,您试图将数据保存在代码中,这可能不是一个好主意。我想为我使用的任何类型的数据库更正一个代码。若我在数据库中为默认值、验证字段和记录设置了正确的代码,这对于每种数据库类型都是特定的,那个么当您只使用一个数据库引擎时,这是很好的。这就是为什么我决定在应用程序中创建代码,用于验证、获取添加记录上的默认值等。我找到了更适合解决我的问题的方法。我将创建一个类inputable,包含子类Person、Client等。现在的问题是使用表名创建实例:类似于这个inputable table=newinputable(tableName)。然后,我将能够为Person、Client或任何我需要的表执行方法。当然我不习惯使用switch语句。谢谢,我解决了我的问题。我所做的:我为模板创建一个类输入表,并为我需要的每个表创建子类。在UI中,我声明一个Dictionary