相关疑难解决方法(0)

如何测试类型是否是匿名的?

我有以下方法将对象序列化为HTML标记.如果类型不是Anonymous,我只想这样做.

private void MergeTypeDataToTag(object typeData)
{
    if (typeData != null)
    {
        Type elementType = typeData.GetType();

        if (/* elementType != AnonymousType */)
        {
            _tag.Attributes.Add("class", elementType.Name);    
        }

        // do some more stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我如何实现这一目标吗?

谢谢

c# reflection anonymous-types

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

匿名类型 - 是否有任何distingushing特征?

有什么可以使用,以确定一个类型是否实际上是一个匿名类型?例如界面等?

目标是创建以下内容......

//defined like...
public static T Get<T>(this IAnonymous obj, string prop) {
    return (T)obj.GetType().GetProperty(prop).GetValue(obj, null);
}
//...

//And then used like...
var something = new { name = "John", age = 25 };
int age = something.Get<int>("age");
Run Code Online (Sandbox Code Playgroud)

或者这只是匿名类型的美丽?没有什么可以自我识别,因为它需要一个新的形状?

注意 - 我意识到你可以为对象类编写一个扩展方法,但在我看来,这看起来有点矫枉过正.

.net c# generics extension-methods anonymous-types

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

修改匿名类型的字段?

在这个例子中:

var p1 = new {Name = "A", Price = 3};
Run Code Online (Sandbox Code Playgroud)

这转化为IL:

class __Anonymous1
{
   private string name ;
   private int price;
   public string Name{ get { return name; } set { name = value ; } }
   public int Price{ get { return price; } set { price= value ; } }
}
__Anonymous1 p1 = new __Anonymous1();
p1.Name = "A";
pt.Price =3
Run Code Online (Sandbox Code Playgroud)

根据IL,它是允许的,为什么会这样?它背后的决定是什么?不应该只读?

谢谢

这是我的第一个问题,温柔.

.net c#

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

反射和自动生成的类型

我有一个类使用"yield"返回语句的单个方法.将自动创建嵌套类型.使用设置为绑定标志的反射BindingFlags.DeclaredOnly,我得到这个输出:

//我班上的公共成员
Test.FileSystemObject..ctor
Test.FileSystemObject.GetFiles(DirectoryInfo目录)
Test.FileSystemObject.GetFiles(String path)

// Auto generated nested class.  
Test.FileSystemObject+<GetFiles>d__4..ctor  
Test.FileSystemObject+<GetFiles>d__4.<>3__directory  
Test.FileSystemObject+<GetFiles>d__4.<>4__this  
Test.FileSystemObject+<GetFiles>d__4.<directories>5__7  
Test.FileSystemObject+<GetFiles>d__4.<files>5__8  
Test.FileSystemObject+<GetFiles>d__4.<FSO>5__6  
Test.FileSystemObject+<GetFiles>d__4.<i>5__9  
Test.FileSystemObject+<GetFiles>d__4.<unprocessed>5__5  
Test.FileSystemObject+<GetFiles>d__4.directory
Run Code Online (Sandbox Code Playgroud)

如何确定返回的类型是否assembly.GetTypes(BindingsFlags)是这样的自动生成类型?我正在寻找一种简单的方法来排除这些.

c# vb.net system.reflection yield-return

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