Tag: 类型

替代嵌套类型的Expression <Func >

我有一个调用服务时使用的函数。 在调用服务之前,它将创建一个日志条目: protected TResult CallService(TService service, Expression<Func> functionSelector) { Logger.LogServiceCall(service, functionSelector); return functionSelector.Compile()(service); } Visual Studio 2010代码分析器通知我不应在以下消息中使用嵌套类型: CA1006:Microsoft.Design:考虑一种设计,其中’ServiceManager.CallService (TService,Expression <Func >)’不嵌套generics类型’Expression <Func >’ 。 虽然我可以简单地为此条目创建抑制规则,但是是否存在会阻止显示此类警告的替代方法?

“原始类型”与“内置值类型”

我最近在使用Array.SetValue(Int32)方法时在C#中遇到了exception。 例外是: 无法从源类型扩展到目标类型,因为源类型不是基本类型或无法完成转换。 对“原始”这个词的引用让我感到有些惊讶,因为我认为倾向于将这些类型称为内置类型,而“原始类型”一词也是一个非正式术语。 “原始”类型和“内置值类型”之间有什么区别? 我没有在C#语言规范中找到原始类型的定义。

c#type用于处理相对和绝对URI和本地文件路径

我有一个用例,我将处理本地文件路径(例如c:\foo\bar.txt )和URI(例如http://somehost.com/fiz/baz )。 我也将处理相对路径和绝对路径,所以我需要像Path.Combine和朋友这样的function。 我应该使用现有的C#类型吗? Uri类型可能会起作用但是一目了然,它似乎只是URI。

在运行时构建c#Generic Type定义

目前我不得不做这样的事情来在运行时构建一个Type定义传递给我的IOC来解决。 简化: Type t = Type.GetType( “System.Collections.Generic.List`1[[ConsoleApplication2.Program+Person”); 我只知道运行时的generics类型参数。 有什么东西可以让我做这样的事情(假代码): Type t = Type.GetTypeWithGenericTypeArguments( typeof(List) , passInType.GetType()); 或者我只是坚持我的hack, passInType.GetType()转换为字符串,构建generics类型字符串..感觉脏

C#中的OR-ing字节给出了int

我有这个代码。 byte dup = 0; Encoding.ASCII.GetString(new byte[] { (0x80 | dup) }); 当我尝试编译时,我得到: 无法将类型’int’隐式转换为’byte’。 存在显式转换(您是否错过了演员?) 为什么会这样? 不应该| 两个字节给一个字节? 以下两项工作,确保每个项目都是一个字节。 Encoding.ASCII.GetString(new byte[] { (dup) }); Encoding.ASCII.GetString(new byte[] { (0x80) });

如何将对象转换为Type类描述的类型?

我有一个对象: ExampleClass ex = new ExampleClass(); 和: Type TargetType 我想将ex类型转换为TargetType所描述的类型: Object o = (TargetType) ex; 但当我这样做时,我得到: 找不到类型或命名空间名称’t’ 那怎么办呢? 我在这里遗漏了一些东西吗? 更新: 我想得到这样的东西: public CustomClass MyClassOuter { get { return (CustomClass) otherClass; } } private otherClass; 因为我会有很多这样的属性,我想这样做: public CustomClass MyClassOuter { get { return (GetThisPropertyType()) otherClass; } } private SomeOtherTypeClass otherClass; 语境: 通常在我class级的上下文中,我需要创建许多属性。 并且在每一个都取代铸造属性的类型。 它对我来说似乎没有意义(在我的上下文中)因为我知道返回类型是什么,我想写一些代码来为我做演员。 也许是仿制药的情况,我还不知道。 这就像我可以保证在这个属性中我得到正确的对象并且是正确的类型并且100%能够将它转换为属性类型。 […]

ValueType.GetType()如何确定结构的类型?

对于引用类型,对象的内存布局是 | Type Object pointer| | Sync Block | | Instance fields…| 对于值类型,对象布局似乎是 | Instance fields…| 对于引用类型,GetType表示从“类型对象指针”中查找对象。 给定引用类型对象的所有对象都指向同一类型对象(也有方法表) 对于值类型,此指针不可用。 那么GetType()如何工作? 我查了一下Google,我发现这个片段..这有点模糊。 有人可以详细说明吗? 解决方案是存储值的位置可以仅存储特定类型的值。 这由validation者保证。 资源

将具体对象类型作为generics方法的参数传递

我有一个使用通用方法的API如下 public static class DataProvider { public static Boolean DeleteDataObject(Guid uid, IDbConnection dbConnection) { // Do something here } public static IDbConnection GetConnection() { // Get connection } } 我的应用程序包含在运行时使用CodeDOM生成的类,为了跟踪我创建了一个名为IDataObject的接口。 我试图将每个对象的具体类型传递给上面的generics方法,如下所示: public static Boolean PurgeDataObject(this IDataObject dataObject, Guid uid) { return DataProvider.DeleteDataObject(uid, DataProvider.GetConnection()); } dataObject包含从IDataObjectinheritance的类的实例。 我有兴趣获得该类型并将其作为T传递。 我试图找出是否有可能在某种程度上使用dynamic这里。 typeof()和GetType()不能像Here中所述那样工作

确定运行时中的类型并将其应用于generics类型 – 我该怎么做?

我想创建一个强类型列表并在运行时决定类型。 这是我的代码。我认为它应该工作,但它没有:) Type elementType = Type.GetType(parts[0].Trim(),false,true); var elementsBeingSet = new List(); 你有什么想法如何创建一个强类型列表,其类型我将在运行时决定? 重复:这是其他版本: 是否无法动态使用generics? 动态声明generics类型实例 使用仅在执行时知道的类型参数调用generics方法

TypeDescriptor.GetProperties()vs Type.GetProperties()

请考虑以下代码。 Object obj; PropertyDescriptorCollection A = TypeDescriptor.GetProperties(obj); PropertyInfo[] B = obj.GetType().GetProperties(); // EDIT* 我试图理解A和B之间的区别。据我所知, TypeDescriptor.GetProperties()将返回自定义的TypeDescriptor属性,其中Type.GetProperties()只返回对象的内在“真实”属性。 这是正确的吗? 如果obj没有任何自定义的TypeDescriptor属性,那么它只是默认返回对象的文字内在属性。 * EDIT之前的第二行代码(返回值错误): PropertyDescriptorCollection B = obj.GetType()。GetProperties();