Tag: 类型

初始化未知类型的通用对象

如何初始化包含类型可能不同的通用对象的列表? 例如,我有以下内容: this.Wheres = new List<Where>(); 如您所知,是无效的语法。 但是,有时传递给Where的类型将是一个字符串,有时它将是DateTime等。我尝试使用object作为初始化类型,但这也不起作用。

使用动态类型调用generics扩展方法

我正在尝试执行返回类型为T的对象的扩展方法,但我正在尝试根据Header / Detail动态generics类型来设置类型T dynamic。 这可能有点冗长…… using System; using System.Collections.Generic; namespace Blah { public interface IHeader { string Name { get; set; } IDetail Detail { get; set; } } public interface IDetail { //Nothing the ‘Real’ implementation of this //interface will have it’s own properties. } public class GenericHeader : IHeader { public string Name […]

使用MEF时,Type.GetType返回null

我目前正在使用MEF来导入插件项目,因为插件是用WPF编写的,每个插件都有一个视图和一个viewmodel。 插件知道viewmodel,但主shell UI将构造视图并使用约定优于配置类型模式绑定viewmodel。 我使用了Build-your-own-MVVM-framework示例中的一些代码来执行自动视图发现: [ImportMany(typeof(IPlugin))] public IEnumerable Plugins { get; set; } var viewTypeName = this.Plugins.First().ViewModel.GetType().AssemblyQualifiedName.Replace(“Model”, string.Empty); var viewType = Type.GetType(viewTypeName,true); 目前的代码只是获取第一个插件并从名称中取出Model ,返回视图名称并获取视图类型以便我可以构造它。 那么viewType的一个例子是: PluginTest.TestView, PluginTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 但是,当我调用Type.GetType(viewType)我得到null,如果我添加true以抛出exception,我得到exception: Could not load file or assembly ‘PluginTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null’ or one of its dependencies. The system cannot find the file specified. 即使已经使用MEF加载了它。 如果我做: var […]

在c#中使用vb.net类

如何在vb.net中创建一个类型并在c#中使用该类型? 我想我需要编译vb项目并添加对dll的引用,但不知道这是否是正确的方法,或者引用是有效的。 这样做并不好玩,我们有一些vb代码,我们正在考虑这个选项。

C#中的条件运算符和返回类型

可能重复: 为什么null需要显式类型转换? 可空类型和三元运算符。 为什么这不起作用? 试图执行以下操作: sqlCmd.Parameters.Add(“@DateCreated”, System.Data.SqlDbType.DateTime).Value = myObject.DateCreated == DateTime.MinValue ? DBNull.Value : myObject.DateCreated; 我收到此错误: 无法确定条件表达式的类型,因为’System.DBNull’和’System.DateTime’之间没有隐式转换 我很明白这个错误,但为什么类型甚至是什么,因为Parameters.Value属于对象类型? 有没有办法完成我想要做的事情?

如何查找作为基类直接后代的类型?

我需要获得所有类型的程序集inheritance一些基类但只有第一个后代。 例如,如果我有: class Base { } class FirstClass : Base { } class SecondClass : FirstClass { } 现在 var directOnes = assembly.GetTypes().Where(t => t.IsSubclassOf(typeof(Base))); 应该只返回FirstClass而不是SecondClass 。 有办法找出来吗?

C#中是否有内置类型包含bool和静态方法返回的字符串?

我正在寻找一种从函数或方法返回的类型,首先传达它是否成功,然后将消息(作为字符串)附加到它以传递有关其失败原因的更多信息。 它可能是应用程序退出代码的一部分; 但是,我不创建一整套退出代码来索引特定的错误消息。 我喜欢单个“成功”退出代码的想法,因此可以快速检查呼叫是否失败并相应地工作。 我想把它作为一系列静态方法(如服务调用)的返回类型,为此我可以创建一个包含这两个字段的类(bool和string); 但是,我觉得这些可能已经存在,尽管我还没有找到它。 此外,如果有更好的实践来处理从方法获得此类信息的返回,或者完全反对这些静态类的一般规则,我欢迎您的意见。 为了更好的可视化 public static CreateSomething(string somethingName) { … return new (“Fail!”, “Because…”); }

你如何使用多种类型的变量?

我经常使用以下方法将对象链接到父母: Video parent; 有时我的对象可以是不同对象类型的子对象,所以我: int parentType; Video parentVideo; // if parent == VIDEO then this will be used Audio parentAudio; // if parent == AUDIO then this will be used 有没有更好的办法? 如何使用可以是不同类型实例的变量? 编辑:当然,如果video和音频inheritance自相同的基类(例如媒体),我可以这样做: Media parent; 但如果父母不inheritance同一个基类怎么办?

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

以下代码似乎无法编译,无论我如何努力投射它: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); } }

获取程序集限定Visual Studio中类的名称

我正在为一些专门的自定义域逻辑编写一个自定义的reflection库,该库将使用XML配置文件,这些文件将在运行时动态解析System.Type对象。 但是,在编写XML配置文件时,编写类型会有点麻烦,因为它们需要是Type.GetType()的完全限定程序集名称才能解决它们。 有没有办法在Visual Studio中找到对象的AssemblyQualifiedName而无需编写程序将它们打印到文件或标准或类似的东西?