Tag: 类型

DropDownList与重复的数据值字段OnSelected混淆并选择第一个为什么?

当前问题:我的DropDownList随DataTextField =“COLUMNS_NAME”DataValueField =“DATA_TYPE”属性一起提供,DropDownList_SelectedIndexChanged()不会根据所选输入保留文本。 但它保留了项目列表中的第一个值 需要解决方案:如何根据DATA_TYPE属性保留选定的输入文本? 我尝试存储Session [“DDLValue”] = DropDownList.SelectedItem.Text但它始终保留满足Index中存在的相应DATA_TYPE的项列表中的第一个值。 即如果我从以下DropDownList输入中选择“e” ,DropDownList中保留的值为“d” 如何保留“e” COLUMN_NAME DATA_TYPE a decimal b decimal c decimal d int e int f varchar g varchar h varchar i varchar j varchar Aspx代码: C#代码: protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { BindDropDownLists(); } } private void BindDropDownLists() { MySqlDataSource.ConnectionString = […]

在数据库中保存类的最佳方法?

在数据库中表示“类型”的好方法是什么? 我有一个基类Action ,它由许多子类inheritance。 Action具有Id , Name等成员,它们对应于名为action的数据库中的表中的等效列。 所以action表看起来像这样: id | name | type type列表示它是什么动作。 在我的代码中,它们对应于从父Action派生的子类。 现在如何将类的类型保存到数据库中的类型字段 ? db中的type列可以是任何数据类型。 选项: 保存action.GetType().ToString()作为db中的字符串。 通过使用reflection将类型的字符串表示转换为其原始类型,从db获取操作类型。 但如果将来类名改变,这将是有问题的。 创建一个枚举来表示每个子类并通过TypeAttribute装饰,例如: public abstract class Action { public enum Kind { [Type(typeof(ControlAction))] ControlAction = 1, [Type(typeof(UpdateAction))] UpdateAction = 2, etc } public abstract Kind ActionType { get; } } public class ControlAction : Action { […]

无法将T value1与T value2 = default(T)进行比较。 为什么以及如何在C#上做到这一点?

我正在尝试以下方法: T value1 = el.value; // it’s of type T already T value2 = default(T); if (value1 != value2) // gives the following error: Operator ‘!=’ cannot be applied to operands of type ‘T’ and ‘T’ { // … } 那么,我怎么能比较这两个值呢? 为什么会出现这种错误? 提前致谢!

在C#中使用Type对象作为generics的类型参数

我找不到在C#3.0 / .NET 3.5的通用构造中使用第一类Type对象(System.Type实例)作为类型参数的方法。 以下是我想要做的简化示例: public void test() { Type someType = getSomeType(); // get some System.Type object MyGeneric obj = new MyGeneric(); // won’t compile } 有没有办法使用someType对象作为generics的类型参数?

字符串值的通用类型

我有一个自定义类,它依赖于传递类型T来传递。 我只知道字符串forms是什么类型,因为它是如何被发送的。 我一直在寻找,但似乎无法找到我需要的确切内容。 我可以将字符串值解析为一个类型,但我需要将其解析为…某些东西,我可以作为generics参数传递。 我已经改写了我的问题,如下: // Classes structure namespace Mynamespace { public interface IRequest { } public interface IHandler where T : IRequest { void Handle(T item); } public class MyRequest : IRequest { } public class MyHandler : IHandler { void Handle(MyRequest item) { } } } // The info I get, and I […]

EF无法将double转换为single

我收到一个错误: “’EoiQuote’上的’BomAmountTaxRate’属性无法设置为’System.Double’值。您必须将此属性设置为’System.Single’类型的非null值。” db表架构是: QuoteID uniqueidentifier Unchecked SubmissionDate datetime Unchecked RfqID uniqueidentifier Unchecked SupplierID uniqueidentifier Unchecked SupplierRef nvarchar(50) Checked BomAmountExTax decimal(18, 2) Unchecked BomAmountCurrencyID int Unchecked BomAmountTaxRate float Unchecked BomTaxAmount decimal(18, 0) Unchecked FreightAmountExTax decimal(18, 0) Unchecked FreightAmountCurrencyID int Unchecked FreightAmountTaxRate float Unchecked FreightTaxAmount decimal(18, 0) Unchecked FreeFormParticulars text Checked AvailabilityOpeningDate datetime Checked AvailabilityClosingDate datetime Checked […]

在枚举中指定基础类型的用例是什么?

有什么意义 enum SomeEnum : byte // <—- { SomeValue = 0x01, … } 当你必须进行转换只是为了将它分配给与枚举基础类型相同类型的变量? byte b = (byte)SomeEnum.SomeValue;

在运行时转换为多个(未知类型)

我正在开发一个能够打开我们通过软件生成的所有自定义文档的查看器。 所有的文件都inheritance自IDocument,但我不确定如何进行反序列化(以一种好的方式 – 嵌套的try / catch可能会起作用,但这很可怕)。 所以我的方法现在看起来像这样: public Boolean OpenDocument(String filename, Type docType, out IDocument document) { // exception handling etc. removed for brevity FileStream fs = null; BinaryFormatter bFormatter = new BinaryFormatter(); fs = new FileStream(filename, FileMode.Open); document = (docType)bFormatter.Deserialize(fs); return true; } 显然这不起作用,因为我不能以这种方式使用变量docType,但我认为它说明了我正在尝试做的事情。 什么是正确的方法去做? 编辑> @John好吧,也许我应该追加另一个问题:如果我有一个界面: public interface IDocument { public Int32 MyInt […]

为什么C#不对generics做“简单”类推理?

只是好奇:当然,我们都知道generics类型推断的一般情况是不可判定的。 所以C#根本不做任何类型的子类型:如果Foo 是generics的, Foo 不是Foo 的子类型,或Foo 或其他任何你可能的类型做饭。 当然,我们都用丑陋的界面或抽象的类定义来解决这个问题。 但是……如果你不能解决一般问题,为什么不把解决方案限制在容易的情况下。 例如,在上面的列表中,显然Foo 是Foo 的子类型,并且检查它是微不足道的。 对于Foo 进行检查也是如此。 如果他们只是说,那么还有其他一些深深的恐怖会从深渊蔓延出来,我们会尽我们所能吗? 或者这只是微软语言人员的某种宗教纯洁? 更新: 这是一个非常古老的线程。 这些天,C#有var,它解决了我抱怨的一半,然后使用Linq风格的匿名代表,有一个很好的表示法,不需要输入相同的东西两次。 因此,我反对的所有方面都已经通过最近对C#的更改得到了解决(或者我只是花了一些时间来了解我刚发布post时刚刚介绍的内容……)我使用这些新内容现在在Isis2系统中可靠的云计算function(isis2.codeplex.com),我认为该库具有非常干净的外观和感觉。 看看它,让我知道你的想法)。 – Ken Birman(2014年7月)

动态设置generics类型参数

继我的问题之后,我正在尝试创建一个通用的值相等比较器。 我以前从未玩过reflection,所以不确定我是否在正确的轨道上,但无论如何我到目前为止都有这个想法: bool ContainSameValues(T t1, T t2) { if (t1 is ValueType || t1 is string) { return t1.Equals(t2); } else { IEnumerable properties = t1.GetType().GetProperties().Where(p => p.CanRead); foreach (var property in properties) { var p1 = property.GetValue(t1, null); var p2 = property.GetValue(t2, null); if( !ContainSameValues(p1, p2) ) return false; } } return true; } […]