如何在内部静态类上调用静态方法

问题描述 投票:0回答:0

我有以下代码:

AvroSerializerSettings settings = new AvroSerializerSettings
{
 Resolver = new AvroPublicMemberContractResolver()
};

var schemaWriter = AvroSerializer.Create<ProductOrderConfirmation>(settings).WriterSchema;

var schema = schemaWriter.ToString();

一切正常。 AvroSerializer 类是内部静态类。我正在尝试做同样的事情,但使用 Activator.CreateInstance 因为我想将我在运行时创建的类型传递给创建方法。所以我有以下代码

Type classType = assembly.GetType("Sample."+typeName);

AvroSerializerSettings settings = new AvroSerializerSettings
{
   Resolver = new AvroPublicMemberContractResolver()
};


var avroSerializerType = 
Type.GetType("Microsoft.Hadoop.Avro.AvroSerializer`1,Microsoft.Hadoop.Avro-Core");

var productSerializerType = avroSerializerType.MakeGenericType(classType);

var writerSchema = productSerializerType.GetMethod("Create", BindingFlags.NonPublic | BindingFlags.Static)
.Invoke(null, new object[] { settings })
.GetType()
.GetProperty("WriterSchema")
.GetValue(null, null);

GetMethod
返回
null
。我试过在没有绑定标志的情况下调用
GetMethod
我也尝试过
GetMethods
调用以查看我是否有方法
Create
但在方法数组中看不到它。

c# activator
© www.soinside.com 2019 - 2024. All rights reserved.