我有以下代码:
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
但在方法数组中看不到它。