相关疑难解决方法(0)

从字符串创建类的实例

有没有办法根据我在运行时知道类的名称来创建类的实例.基本上我会在字符串中有类的名称.

.net c# instantiation system.type

198
推荐指数
5
解决办法
25万
查看次数

将字符串转换为C#中的类型

如果我收到一个包含类名称的字符串,并且我想将此字符串转换为实际类型(字符串中的那个),我该怎么做?

我试过了

Type.GetType("System.Int32")
Run Code Online (Sandbox Code Playgroud)

例如,它似乎工作.

但是当我尝试使用自己的对象时,它总是返回null ...

我不知道提前在字符串中会有什么,所以它是我将其转换为真实类型的唯一来源.

Type.GetType("NameSpace.MyClasse");
Run Code Online (Sandbox Code Playgroud)

任何的想法?

.net c# string types

162
推荐指数
3
解决办法
20万
查看次数

从不同程序集中的类名解析类型

我有一个方法,我需要解决类的类型.此类存在于另一个程序集中,该命名空间类似于:

MyProject.Domain.Model
Run Code Online (Sandbox Code Playgroud)

我试图执行以下操作:

Type.GetType("MyProject.Domain.Model." + myClassName);
Run Code Online (Sandbox Code Playgroud)

如果执行此操作的代码与我尝试解析其类型的类在同一程序集中,则此方法很有用,但是,如果我的类位于不同的程序集中,则此代码将失败.

我确信有一个更好的方法来完成这个任务,但是我没有很多经验来解析程序集和遍历名称空间来解决我正在寻找的类的类型.有关更优雅地完成此任务的任何建议或提示吗?

.net c# reflection

73
推荐指数
2
解决办法
5万
查看次数

user.config的自定义路径

我使用VS2008中的设置设计器管理我的应用程序设置.

"user.config文件的确切路径如下所示:"

<Profile Directory>\<Company Name>\
 <App Name>_<Evidence Type>_<Evidence Hash>\<Version>\user.config
Run Code Online (Sandbox Code Playgroud)

有没有办法定制这条路径?我更喜欢这样的东西:

<Profile Directory>\<Company Name>\
 <App Name>\<Version>\user.config
Run Code Online (Sandbox Code Playgroud)

我注意到新创建的文件夹("Test Company" - >"Test_Company")中的"公司名称"中的下划线替换了空格.我真的希望关闭这种行为.

你知道,我可以写一个新的基于XML的设置处理程序,但我想使用设置设计器.

c# settings visual-studio

29
推荐指数
2
解决办法
2万
查看次数

Type.GetType返回null

我正在尝试使用Type.GetType并传递"caLibClient.entity.Web2ImageEntity"完整的类名.caLibClient.entity是名称空间,位于分离的程序集(caLibClient)中,并添加到程序引用程序集列表中.当我从程序中调用它时,Type.GetType总是返回Null,这有什么问题?

c# gettype

13
推荐指数
1
解决办法
2万
查看次数

Type.GetType()返回null

我有一个使用usercontrols动态创建网页的Web应用程序.

在我的代码中,我有以下内容:

    private void Render_Modules()
    {
        foreach (OnlineSystemPageCustom.OnlineSystemPageHdr.OnlineSystemPageModule item in custompage.Header.Modules)
        {
            if (item.ModuleCustomOrder != 99 && !item.ModuleOptional)
            {
                string typeName = item.ModuleInternetFile;
                Type child = Type.GetType(typeName);
                webonlinecustombase ctl = (webonlinecustombase)Page.LoadControl("../IPAM_Controls/webtemplatecontrols/" + child.Name.ToString() + ".ascx");
                ctl.Event = Event;
                ctl.custompage = custompage;
                ctl.custommodule = item;
                this.eventprogrammodules.Controls.Add(ctl);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

返回的"typeName"(示例)是:

IPAMIntranet.IPAM_Controls.webtemplatecontrols.eventorgcommittee

用户控件的命名空间如下:

namespace IPAMIntranet.IPAM_Controls
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是Type.GetType(typeName)返回null.我在这里错过了什么?

c# asp.net user-controls web-applications gettype

9
推荐指数
1
解决办法
2万
查看次数

Type.GetType无效

我刚刚注意到函数中的一个错误:

Type.GetType("System.Uri");
Run Code Online (Sandbox Code Playgroud)

返回值为null,而以下函数运行良好...

Type.GetType("System.string");
Type.GetType("System.bool");
Type.GetType("System.DateTime");
Run Code Online (Sandbox Code Playgroud)

...

任何人都知道,为什么返回的Type为null?

编辑:删除Uri双重进入...

c# types uri

6
推荐指数
2
解决办法
2万
查看次数

在单元测试中验证 Autofac 注册

我正在为我的 注册多种类型Container,实现各种接口。

以某种编程方式,我想要一个单元测试来检查所有解析是否成功,这意味着注册中没有循环或丢失的依赖项。

我试图添加这样的东西:

        [TestMethod]
        public void Resolve_CanResolveAllTypes()
        {
            foreach (var registration in _container.ComponentRegistry.Registrations)
            {
                var instance = _container.Resolve(registration.Activator.LimitType);
                Assert.IsNotNull(instance);
            }
        }
Run Code Online (Sandbox Code Playgroud)

但是它在第一次运行时失败了Autofac.Core.Lifetime.LifetimeScope,尽管我有一些方法可以接受ILifetimeScope作为参数并在我的应用程序启动时得到它。

c# unit-testing ioc-container autofac vstest

6
推荐指数
1
解决办法
3287
查看次数

MVC5 T4 ModelMetadata.Properties IsNullable 或 IsRequired

我正在尝试为 MVC5 控制器创建替换 T4 模板。除了一个问题,我一切正常。

我需要为模型中的每个属性生成代码,循环遍历ModelMetadata.Properties实际上非常简单。但是,它不是PropertyInfos的数组。相反,它是一个数组,PropertyMetadata其中似乎没有任何关于属性是否需要或它的类型是否可以为空的信息。因此,您的模型中的属性 typeintint?两者都显示为 type System.Int32

此外,无法获得PropertyInfos的列表,因为您无法真正获得Type您正在搭建的模型的Object,因为只有短类型名称会传递给模板。

总结:有没有办法在 T4 模板中知道一个属性是否可以为空?

c# asp.net-mvc t4 asp.net-mvc-scaffolding

5
推荐指数
1
解决办法
1224
查看次数

如何检索程序集的限定类型名称?

如何生成程序集限定类型名称?

例如,在配置成员资格提供程序时,我必须在"type"属性中为"SqlMembershipProvider"(在此示例中,我从某处复制以下配置)提供程序集限定类型名称.

如何生成该程序集限定类型名称?是否必须通过检查装配类型每次手动输入?

<membership>
  <providers>
    <clear />
    <add name="AspNetSqlMembershipProvider"
           type="System.Web.Security.SqlMembershipProvider,
           System.Web, Version=2.0.0.0,
           Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"
           connectionStringName="LocalSqlServer"/>
  </providers>
</membership>
Run Code Online (Sandbox Code Playgroud)

[更新]:更简单的PowerShell版本

PS>([System.String]).AssemblyQualifiedName
System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
Run Code Online (Sandbox Code Playgroud)

c# asp.net powershell configuration web-config

4
推荐指数
1
解决办法
2万
查看次数