标签: activator

通过Activator.CreateInstance检查Object是否为Interface

我正在使用Activator.CreateInstance在运行时从Dll创建一个对象,

如果对象是接口我得到一个错误,我不想创建该接口的对象.

所以我的问题是有没有选项来检查对象是否是接口而不是类?

c# types casting interface activator

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

C# Activator createInstance 用于扩展类

我有一个基类,如下所示:

public Data()
    {
        id = num++;
        SetVariables();
    }
    //fill every Variable varNames, parseInduction, noise, seperator in Children Classes
    public Data(String line)
    {
        //first declare all variables in sub classes
        if (id == 0)
            throw new NotSupportedException("You are not allowed to use this constructor for creating the first instance!");
        id = num++;
        SetVariables();
        parseLine(line);
    }
Run Code Online (Sandbox Code Playgroud)

而且我还有一个扩展这个类的子类。

class DienstGruppe : Data
{
    protected override void SetVariables(){
        varNames = new String[] {"id", "name"};
        parseInduction = "DienstGruppen = {";
        parseEnd = "};";
        beginOfDataLine …
Run Code Online (Sandbox Code Playgroud)

c# inheritance createinstance activator extending

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

如何创建类的实例并从像Session这样的Bag对象设置属性

该类将被声明runtimevalues存储在Bagsession或的对象中ViewBag.现在我想创建一个类的实例,并使用Bag数据设置它的属性 .我知道我应该使用reflection,但我不知道是否有任何开箱即用的方法或者我应该创建一个

session["Foo"] = "foo";
session["Bar"] = "bar";

var instance = System.Activator.CreateInstance(Type.GetType(className));

instance = ? // how to set properties using session
Run Code Online (Sandbox Code Playgroud)

该类在设计时间不可用,应用程序不知道它的属性是什么.

c# reflection activator system.reflection viewbag

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

用其类型实例化一个类

我正在寻找一种比Activator.CreateInstance从其类型实例化类更快的方法。

我现在正在这样做:Activator.CreateInstance(typeof(LoginView));但它非常慢:我在实例化不同视图时看到一些滞后。

给我一个建议?我现在在谷歌上搜索了几个小时,但我没有找到比这更快的方法来完成我想做的事情..:/

多谢 (:

c# reflection activator

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

如何使用Activator.CreateInstance将泛型类型实例化为using块的一部分?

我想要实现的是将以下方法转换为更通用的方法:

    private Task<TestResult> SpecificServiceWarmUp(string serviceEndPoint)
    {
        return Task<TestResult>.Factory.StartNew(() =>
        {

            using (var service = new MySpecificClient(serviceEndPoint))
            {
                // do some stuff with specific client
            }
        });
    }
Run Code Online (Sandbox Code Playgroud)

更通用的版本看起来像:

    private Task<TestResult> GenericServiceWarmUp<TService>(string serviceEndPoint)
    {
        return Task<TestResult>.Factory.StartNew(() =>
        {

            using (/* instance of TService */)
            {
                // do some stuff with generic client
            }
        });
    }
Run Code Online (Sandbox Code Playgroud)

我不知道的是如何告诉usingActivator用于创建泛型类型的实例.这可能吗?如果是这样,我该怎么做?

c# using activator

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

C#在运行时使用泛型创建对象

在以下示例中,我可以通过字符串动态创建对象; 但是,我无法获得BASE类的公共方法.我无法将obj转换为BASE因为我不知道在设计时将使用什么泛型.在运行时这样做的任何建议都会很好.

项目A包含A类{T,J>:BASE {T,J>
项目B包含B类{T,J>:BASE {T,J>

Project C包含Class BASE {T,J>
public virtual control {T,J> item

Project Windows Form
cmdGo_Click事件

string dll = textbox1.text // ex"ProjectA.dll"
string class = textbox2.text // ex"A`2 [enuT,enuJ]"
object obj = activator.createinstancefrom(dll,class)

c# generics runtime activator

0
推荐指数
1
解决办法
4368
查看次数

COM.C#创建com-object类型

我正在开发一些使用com库的代码.我正在尝试通过创建类的实例

Type t = Activator.CreateInstance("TypeID"); 
Run Code Online (Sandbox Code Playgroud)

但我不能一直得到它的类型= null.progid已经通过Ole/COM Wever查看,似乎我确实输入了它.在什么可能是prolem?

c# com activator

0
推荐指数
1
解决办法
2454
查看次数

传递要使用构造函数或方法的参数创建的对象列表

基本上我要做的是创建一个可以使用大量创建对象的类

Activator.CreateInstance(Type type, params object[] args)
Run Code Online (Sandbox Code Playgroud)

我需要将所有对象蓝图传递给一个名为ObjectMap的类的构造函数.它需要是一个类型和参数的对.如果允许解决方案,它也可以是另一个类而不是构造函数的方法.

有点像

new ObjectMap([Type, somevalue, somevalue, somevalue], [Type, somevalue], [Type] ...)
Run Code Online (Sandbox Code Playgroud)

要么

Resources.AddObjectMap([Type, somevalue, somevalue, somevalue], [Type, somevalue], [Type] ...)
Run Code Online (Sandbox Code Playgroud)

我不知道如何制作它,以便您可以传递可变数量的对与可变数量的参数(甚至0).哎呀,我甚至很难解释这个问题.问我任何你不清楚的事情= S.

Gr.Viller

c# constructor activator

0
推荐指数
1
解决办法
5709
查看次数

C# - 从string创建派生类实例,然后添加到基类列表

我将读取一个字符串输入,它将确定要创建的派生类的类型.然后,创建的对象将添加到基类对象列表中.

当我尝试将结果添加Activator.CreateInstance();到列表中时,我得到:

Cannot implicitly convert type 'object' to 'Namespace.Animal'. An explicit conversion exists (are you missing a cast?)

我得到了以下内容:

List<Animal> animals;

Type animal_type = Type.GetType(class_name); // eg lion, tiger
object new_animal = Activator.CreateInstance(animal_type);

animals.Add(new_animal);
Run Code Online (Sandbox Code Playgroud)

如何将新创建的对象添加到列表中?

c# inheritance list activator

-2
推荐指数
1
解决办法
794
查看次数