假设我有一个如下所示的文件:
@CreateFieldClass
public class Queue {
private String queueId;
private int order;
private boolean isActive;
/* Getters and Setters */
}
我想要的是,如果有@CreateFieldClass注释,我想在相同的包中生成一个新的java文件,如下所示
public class QueueFields {
public static fin
我正在修改我的问题的措辞,以更具体,并针对实际关注的领域。
我有许多不同的类,它们是我的实体,我不知道那个类是什么。当我想要将实体升级到新的实体时,我希望将属性转移到称为相同的新实体(正如我发现的,它们是不区分大小写的)。
我的问题很简单,但可能需要一个复杂的答案。
当我遇到与升级的类型不同的类型时,我需要将旧的类型转换为新的类型。这两种类型都是未知的,因为这就是重点。我可以传递我想要的任何两个类,它将很好地传递属性。
所以如果我有两个类:
public class OldEntity
{
public string Name {get;set;}
public int Som
当我跑步时:
MethodInfo m = typeof(Expression).GetMethod("Lambda", new Type[]{typeof(Expression), typeof(ParameterExpression[])});
我得到:
System.Reflection.AmbiguousMatchException: Ambiguous match found.
这是为了一般性地这样做(而不是知道它是一个字符串)。
var newExpression = Expression.Lambda<Func<T, string>>(pr
我的基班是
public abstract class BaseContext {
public void SaveChanges() {
context.SaveChanges();
}
}
我的驾驶课是
public class DriveClass : BaseContext {
}
我有另一个类,它包含调用基类SaveChanges方法的泛型方法,如
public class AnyClass {
MyMethod<DriveClass>(repo);
private void MyMethod<T>
在C#中,使用泛型参数来修改泛型方法的行为通常是不好的做法吗?
在示例中:
class Foo { }
class Bar { }
void GenericMethod<T>()
{
if (typeof(T) == typeof(Foo))
{
Console.WriteLine("execute action for Foo");
}
if (typeof(T) == typeof(Bar))
{
Console.WriteLine("execute action for Bar
在EF代码中,首先使用下面的代码,我可以基于每个实体类型创建非泛型DbSets:
foreach (var entry in _dbContext.ChangeTracker.Entries<BaseEntity>())
{
BaseEntity entity = entry.Entity;
Type type = entity.GetType();
var set = _dbContext.Set(type);
}
有没有办法将它们创建为通用的DbSet?
我已经为所有的基类型以及泛型数组、ICollection(Of T)和Dictionary(Of String,T)创建了一个MyFunc扩展(在模块扩展中):
Function MyFunc(Of T)(a() As T) As String
Function MyFunc(Of T)(collection As ICollection(Of T)) As String
Function MyFunc(Of T)(dict As Dictionary(Of String,T)) As String
在大多数情况下,我直接使用函数(即“测试”.MyFunc()),但是有一些后期绑定的情况,我正
我有enum帮助器泛型类,我有方法EnumDescription()来调用它,我必须像EnumHelper<Enumtype>.EnumDescription(value)一样,我想实现enum扩展方法EnumDescription(this Enum value),它基于我的枚举帮助器方法EnumHelper<T>.EnumDescription(value)
有一件事我被困住了。下面是我的代码:
public static string EnumDescription(this Enum value)
{
Type type = value.GetType(
我需要使用反射在类上调用一个方法。该类包含同一函数的两个重载:
string GenerateOutput<TModel>(TModel model);
string GenerateOutput<TModel>(TModel model, string templateName);
我得到的方法如下:
Type type = typeof(MySolution.MyType);
MethodInfo method = typeof(MyClass).GetMethod("GenerateOutput", new Type
在一个方法中,我有一个这样的对象:
Activator.CreateInstance(Type.GetType(TargetObject))
我需要将这个对象传递给另一个接受泛型类型的类:
public class Repository<T> where T : class
{
}
如何将此对象用作T to Repository类?
我有以下代码来获取集合的对象类型:
Dim objType As Type = myCollection.[GetType]().GetProperty("Item").PropertyType
这行似乎行得通,但是我需要将集合转换为指定集合类型的datatable,将对象类型作为参数传递的正确方法是什么?
我在试着:
DataTableCollectionConverter.ConvertToDataTable(Of objType)(myCollection)
但是它甚至不能被识别为有效的代码。
我使用的是VS2005,NET2.0
提前谢谢。
如何使用System.Reflection.Emit库生成这样的类型:
public class Test<T> {}
public class Test<T1, T2> {}
当我使用第二个类型声明调用ModuleBuilder.DefineType(string)时,我得到了一个异常,因为模块中已经有另一个同名的类型(我已经在第一个类型上定义了类型参数)。有什么想法吗?
我有一个类,用来存储要调用的WS方法的名称以及服务接收的唯一参数的类型和值(它将是一个参数集合,但对于这个示例,让我们保持它的简单性):
public class MethodCall
{
public string Method { get; set; }
public Type ParType { get; set; }
public string ParValue { get; set; }
public T CastedValue<T>()
{
return (T)Convert.ChangeType(ParValue, ParType);
有可能让这样的代码工作吗?
private List<Type> Models = new List<Type>()
{
typeof(LineModel), typeof(LineDirectionModel), typeof(BusStopTimeModel), typeof(BusStopNameModel)
};
foreach (Type model in Models) // in code of my method
{
Connection.CreateTable<model&
有点迷惑,我有一个泛型类
public abstract class MyClass<T> : UserControl
{
}
我有一个像这样的类型
Type type = Type.GetType("Type From DB as String", true, true);
并且我想使用类型...创建MyClass的实例。但这不管用。
MyClass<type> control = (MyClass<type>)LoadControl("/UsercControl.ascx");
有什么想法?
我正在做一个维基项目。首先使用MVC3 + EF4代码。
我的模型中的所有类都继承自一个主要的"EditBase“类。这确保它们都有ID、用户名和CreatedDate。它还帮助我为basic CRUDs创建一个通用存储库。
我希望定义一个名为AbuseReport的新实体来处理不正确/不正确内容的标记:
public class AbuseReport : EditBase
{
public DateTime DateReported { get; set; }
public string EntityType { get; set; }
public int
我有以下代码:
public class ClassExample
{
void DoSomthing<T>(string name, T value)
{
SendToDatabase(name, value);
}
public class ParameterType
{
public readonly string Name;
public readonly Type DisplayType;
public readonly string Value;
var repo = new MyRepo();
repo.RemoveDataRecord<MyProj.Data.Person>(5);
上面的代码从linq to sql存储库中的Person表中删除了一条记录。
这就是我想做的:
var repo = new MyRepo();
repo.RemoveDataRecord<"MyProj.Data.OrderItem">(17);
目的:每个管理页面都有一个记录表,每个记录都有一个如下所示的"delete“链接:
<a href="#" id="17"
我有一个将泛型类型作为其初始化的一部分的类。
public class AnimalContext<T>
{
public DoAnimalStuff()
{
//AnimalType Specific Code
}
}
我现在能做的是
AnimalContext<Donkey> donkeyContext = new AnimalContext<Donkey>();
AnimalContext<Orca> orcaContext = new AnimalContext<Orca>();
但是我
我使用ProtoBuf来序列化在运行时使用Activator.CreateInstance创建的类。不幸的是,Serializer.Deserialize方法给出错误“类型不是预期的,并且没有契约可以推断: System.Object”。任何关于如何解决这个问题的提示。
var converterName = "Passing class name as string"
var type = Type.GetType(converterName);
var yourObject = Activator.CreateInstance(type)
我遇到了泛型的奇怪行为。下面是我用来测试的代码。
public static class Program
{
public static void Main()
{
Type listClassType = typeof(List<int>).GetGenericTypeDefinition();
Type listInterfaceType = listClassType.GetInterfaces()[0];
Console.WriteLine(listClassType.GetGenericArguments(
我有一个JSON反序列化程序(如下所示),当我使用已知类型调用它时,它工作得非常好。
public static T Deserialize<T>(this object obj)
{
var javaScriptSerializer = new JavaScriptSerializer();
return (obj != null) ?
javaScriptSerializer.Deserialize<T>(obj.ToString()) :
default(T);
}
因此,此调用将起作用:
var newExamp
我正在为桌面、Windows 8商店和Windows phone同时构建新的应用程序。因此,我创建了可移植类库,使其具有跨所有平台的通用功能。我的问题是,当我试图在PCL中重用我的代码时,我无法访问库中的一些方法和属性。根据MSDN的说法,这些方法是受支持的,但是我现在知道为什么我不能访问它们了。
var property = memberExpression.Member as PropertyInfo;
if (property == null)
{
}
var getMethod = property.Ge
我有一个应该返回实现泛型接口的对象的方法。它接受一个参数,该参数确定要实例化哪个类并返回实例化对象。
public class PlayerRetriever
{
public static IPlayer<T> Retrieve(string SitePath)
{
if (SitePath == "Home") { return new Player1(); }
else { return new AnotherPlayer(); }
}
}
鉴于这门课:
public class A<T>
{
public void Handle(object payload)
{
if(IsEnumerable(payload)) //assume this works
{
var closedMethod = GetType()
.GetMethod(
"HandleIEnumerable",
BindingFlags.NonPubl
我需要将泛型类型参数传递给接口。我有一个包含类型名称的字符串。
我有这样的东西:
string type = "ClassType";
Type t = Type.GetType("ClassType");
IProvider<t> provider = (IProvider<t>)someObject;
这对我不起作用。正确的做法是什么?谢谢。
我有一个简单的泛型错误处理程序IErrorHandler<T>,其中T是一个例外。我使用结构图根据Application_Error中引发的异常获取处理程序的具体实现。下面是我用来获取处理程序的代码。
var exceptionType = ex.GetType();
var handlerType = typeof(IErrorHandler<>).MakeGenericType(exceptionType);
var handler = IoCContainer.GetInstance(handlerType); // this returns an object
我一直在使用一些代码,我也需要添加一个模块,我以为我已经正确地设置了所有东西,但最后一点让我困惑了。
这看起来相对简单,我将一个类型传递给一个泛型方法
var name typeof(T).AssemblyQualifiedName;
这样我就可以这样做了
var type = Type.GetType(name);
但是,它在最后一行抛出了一个异常,其中name为null
我一直在读类型反射,我知道GetType需要完全限定的程序集名称,但我不明白为什么它会返回为空。
这是否意味着我在代码中做了一些根本性的错误,因为我假设AssemblyQualifiedName是从一个类型发出的,因为它知