Tag: 铸造

inheritanceLinq to SQL类并转换linq查询的结果

我正在编写一个应用程序,我们需要将基本实体扩展为许多不同的东西(例如员工,车辆等)。 设计是这样的,即存在实体表和具有类型特定值的第二表,例如,雇员将具有ID号但车辆将具有注册号。 我从数据上下文中生成的类实体inheritance,但在我的存储库中进行转换时遇到问题。 这样做的正确方法是什么? public class cAccountEmployee : cAccountEntity { public string id_number { get { try { return this.cAccountEntityValues.Single(e => e.type == 1).value; } catch (Exception) { return “”; } } set { try { this.cAccountEntityValues.Single(e => e.type == 1).value = value; } catch (Exception) { this.cAccountEntityValues.Add(new cAccountEntityValue() { accountentity_id = this.id, cAccountEntity = […]

将generics类型对象转换为子类型

我的代码中有以下场景: class Document {} class Track : Document {} class ViewListClickHandler { // I can’t change that signature, it’s provided by a library I use. protected override void click(object theList, int index) { // I here need to cast “theList” to IList where T : Document } } 我现在的问题是(正如评论中所写): 如何将theList转换为类似IList where T : Document的类型IList where […]

为什么不能通过表达式引用类型?

以下代码似乎无法编译,无论我如何努力投射它:P可以somone请告诉我我做错了什么? public class LUOverVoltage { public string Name { get; set; } public enum OVType { OVLH, OVLL } public List PinGroups = new List(); public void Add(string name, OVType type, string Grp) { this.Name = name; this.OVType = type; //Why cannot reference a type through an expression? PinGroups.Add(Grp); } }

OOC:ToList()和.NET中的List 之间有什么区别?

OOC:出于好奇 所以,作为一个小练习,为了学习,我决定检查我是否能够实现一个非常基本的递归函数,它将返回一个List ,但有以下限制: 1-结果应该由函数本身返回(而不是作为参数传递给void函数)。 2 – 在函数体中声明没有本地“命名”变量。 我想出了下面的解决方案(顺便说一句:这可以以任何方式改进吗?) 在这样做的过程中,我了解到ToList()与ToList() List (见下面的例子) – 那里的任何人都可以解释幕后发生的事情以及两者之间的区别是什么? 谢谢! PS – 我正在使用4.0版(如果它很重要)。 编辑:运行时错误是Unable to cast object of type ‘d__71’1[System.Int32]’ to type ‘System.Collections.Generic.List’1[System.Int32]’ public static List SomeIntegers(int min, int max) { //assume max >= min for simplicity if (min == max) return new List() { min }; // runtime error //return […]

在C#中使用“类型”对象键入转换对象

到目前为止,这个对我来说有点棘手。 我想知道是否可以使用System.Type对象键入强制转换对象。 我在下面说明了我的意思: public interface IDataAdapter { object Transform(object input); Type GetOutputType(); } public class SomeRandomAdapter : IDataAdapter { public object Transform(object input) { string output; // Do some stuff to transform input to output… return output; } public Type GetOutputType() { return typeof(string); } } // Later when using the above methods I would […]

实例化一个Internal类并将其作为给定类型进行转换

跟进InternalsVisibleTo 。 我已经看过c#Instantiating内部类与私有构造函数 ,这有帮助,但我试图将返回的对象作为内部类型,并且说实话,我不是100%,这是可能的。 我正在尝试使用Reflection的路径来解决这个问题,但是我正在努力弄清楚如何使用reflection来实现私有方法的内部类型。 我可以去拉类型并获取构造函数并创建一个对象。 如果我想要转换的类型是内部类型,我将如何预先形成对象的强制转换。 public object InitPrivateCoreObjects(string Type) { Assembly Core = Assembly.Load(“Stuff.Core, Version=0.3.3881.21340, Culture=neutral, PublicKeyToken=4fe470e63e2d354e”); Type TypeToReflect = Core.GetType(“Stuff.Core.AssemblyWithIdentifer”); object o = Activator.CreateInstance(TypeToReflect); MethodInfo mi = TypeToReflect.GetMethod(“AssemblyWithIdentifer”); object newObject = mi.Invoke(o,null); //alternatively //ConstructorInfo ctor = TypeToReflect.GetConstructor(new Type[]{TypeToReflect.GetType()}); //ctor.Invoke(newObject, null); return newObject; } 我可以得到内部类的类型, 我可以调用构造函数并实例化该类型的对象。 但是,由于我无法访问内部类型,因此无法对其进行转换并从中进行操作。 我知道我可以使用Reflection.Emit来创建一个基于该类型的新类,但是如果我要走那条路,那么我也可以将我试图访问的项目的全部内容复制到我的测试项目中。 这将是非常浪费和毫无意义的,并且需要我从其他项目中投入一些东西并造成混乱,而这绝对不是我此时想去的路线。 我已经看到访问单个方法和属性的示例,但没有实例化整个类。 我不是100%确定它是可能的,因为在操作顺序中reflection发生在查看访问修饰符之前。 可以这样做,如果是这样,怎么办? 为了求情,我想使用实例化的对象进行测试,而[Assembly:InternalsVisibleTo(“”)]由于我目前正在解决的bug而无法正常工作。 […]

将generics参数转换为整数和从整数转换

我想编写generics类,它用于内置类型,如byte和ushort 。 在内部计算中,我需要将generics类型转换为整数并返回generics类型。 我找到了编译此类代码的方法,例如: class Test where T : struct, IConvertible { public static T TestFunction(T x) { int n = Convert.ToInt32(x); T result = (T)Convert.ChangeType(n, typeof(T)); return result; } } 我认为如果将它们用于计算循环中,使用此类转换可能会显着降低性能。 有没有更好的方法来进行这些转换?

在C#中,你可以将一个generics类型转换为另一个T参数是第一个T的子类吗?

我遇到了一个问题,我有一个generics,我正试图转换到另一个,其中第二个的genericsT参数是第一个中使用的子类。 这是我的代码,为了理解而简化… public partial class HierarchicalItem { public ObservableHierarchicalCollection ContainingCollection{ get; private set; } public HierarchicalItem Parent{ get{ return (ContainingCollection != null) ? ContainingCollection.Owner : null; }} } public partial class HierarchicalItem { public class ObservableHierarchicalCollection : ObservableCollection where T : HierarchicalItem { public ObservableHierarchicalCollection(HierarchicalItem owner) { this.Owner = owner; } public HierarchicalItem Owner{ get; […]

为联网应用程序设计帮助?

注意 这是一个相当大的问题,所以请耐心等待,如果不清楚,我会提前道歉。 为了使这个问题易于管理,并尽量减少混淆,我省略了复制和粘贴类的一些属性。 CONTEXT 我正在编写一个联网应用程序 – 一种“远程桌面”应用程序,以便普通技术人员可以帮助他的朋友或邻居解决计算机问题。 我意识到像TeamViewer这样的免费和更高级的软件存在,但这个问题并没有讨论创建这个软件的实用性。 共同条款 客户是技术员,帮手 – 控制器 。 服务器是“受害者”,遇险者。 客户端通常是向服务器发起命令的客户端。 信息 该软件不仅仅是实时查看/控制应用程序。 我想要额外的模块 ,例如文件资源管理器模块和聊天模块 ( 这样他们就可以在不需要使用额外的即时消息软件的情况下进行通信 )。 最初,我通过UDP发送和接收消息的方法是手动且低效的。 ( 我使用Lidgren库进行UDP网络连接,这就是为什么我的数据包不显示低级字节,如标题消息大小。 ) Original Packet Structure: Byte Index Type Purpose/Description —————————————————— 0 byte The intended destination module (eg 1 -> Chat module) 1 byte The command for this module to perform (eg […]

在C#中将string.Empty转换为(generic)T?

我有一个实用程序方法,它使用签名从旧的.INI配置类型文件返回强类型值 internal static T GetIniSetting(string config, string key, T defVal = default(T)) 我希望字符串是特殊的,因为我希望defaultValue的默认值是string.Empty ,而不是default(string) (即null),在编码器没有指定默认值的情况下。 if (cantFindValueInIniFile == true) { if ((typeof(T) == typeof(string)) && (defaultValue == null)) { // *** Code needed here – Cannot convert string to *** return (T)string.Empty; } return defaultValue; } 我已经尝试过强制转换,而as关键字也无济于事。