小编mic*_*ael的帖子

如何获得依赖项属性的默认绑定模式?

我想以编程方式找出属性的默认绑定模式.

例如,如果我检查它TextBox.TextProperty应该是BindingMode.TwoWay,但如果ItemsControl.ItemsSourceProperty它应该是BindingMode.OneWay.

我实现了一个自定义的MarkupExtension,到目前为止我的代码中已经有了这么多:

public override object ProvideValue(IServiceProvider provider)
{
    var service = provider.GetService(typeof(IProvideValueTarget)) as IProvideValueTarget;

    if (service != null)
    {
        var target = service.TargetObject as DependencyObject;
        var property = service.TargetProperty as DependencyProperty;

        // Not sure what to do with the target and propery here...
    }
}
Run Code Online (Sandbox Code Playgroud)

c# data-binding wpf dependency-properties binding-mode

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

如何替换ServiceContract和OperationContract的命名约定?

我有以下代码:

[ServiceContract(Name = "Save{0}")]
public ISave<T> where T : BusinessObject
{
    [OperationContract(Name = "Save")]
    void Save(T obj);
}

public class SaveCustomer : ISave<Customer>
{
    public void Save(Customer obj) { ... }
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是我使用IIS/WAS的WCF应用程序不喜欢我给的名字.它不会自动填充它.我看到了这个stackoverflow问题,它有关于为什么名称不会自动格式化的答案.我没有等待微软允许格式化名称,而是看到我是否可以用我自己的名称替换名称的功能.

我只是不确定我需要扩展(哪一类ServiceHost,ServiceHostFactory,DataContractSerializer等),甚至什么方法我要重写,以获得更友好的名称.另外,因为我甚至不知道我要创建什么类,我不知道在哪里可以告诉我的应用程序使用它(Global.asax成员?svc文件?属性?).

c# asp.net generics wcf datacontract

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

你如何在便携式类库中使用IPrincipal和IIdentity?

使用WIF(Windows Identity Foundation)4.5,Microsoft创建了WindowsPrincipal类,这是一种类型ClaimsPrincipal.当然,这些类不可移植,但它们背后的接口是(IPrincipal).ClaimsIndentity实现IIdentity接口的类也是如此.

我遇到的问题是这些类和WIF一般完全基于"声明"的概念,这很棒......但是这两个接口IPrincipalIIdentity没有.不仅如此,ClaimsPrincipal该类还具有一系列标识,而不仅仅是与之关联的单个标识.

  • IPrincipal有IdentityIsInRole成员.
  • IIdentity的有AuthenticationType,IsAuthenticatedName成员.

鉴于可移植类库只能访问这两个接口,如何获得实际的声明?

此外,在极少数情况下,委托人具有多重身份,如何获得"非主要"身份?

iprincipal iidentity wif portable-class-library .net-4.5

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

PRISM + MEF - 进口和进口许多

FooService.cs:

public interface IFooService
{
    int Foo();
}

[Export("Foo1", typeof(IFooService))]
public class Foo1 : IFooService
{
    public int Foo() { return 1; }
}


[Export("Foo2", typeof(IFooService))]
public class Foo2 : IFooService
{
    public int Foo() { return 2; }
}
Run Code Online (Sandbox Code Playgroud)

FooViewModel.cs:

public class FooViewModel : NotificationObject
{
    [ImportMany(typeof(IFooService))]
    public IEnumerable<IFooService> FooServices { get; private set; }

    [Import("Foo1")]
    public IFooService FirstFoo { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)


单个导入有效,因为我有一个命名合同,但多重导入没有.如果我更改导出属性并删除指定的合同,则多重导入有效,但单个导入不起作用.我怎样才能让两者同时工作?

c# dependency-injection mef

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

C# - 静态只读字符串 - 可能遇到多线程问题?

public class MyClass<T>
{
    public static readonly String MyStringValue;

    static MyClass()
    {
        MyStringValue = GenerateString();
    }

    private static String GenerateString()
    {
        //Dynamically generated ONCE per type (hence, not const)
    }

    public void Foo()
    {
        Console.WriteLine(MyStringValue);
    }
}
Run Code Online (Sandbox Code Playgroud)

我的理解是,在类上调用静态构造函数之前,不会生成静态readonly String.但是,在访问其中一个静态方法或变量之前,不会调用静态构造函数.

在多线程环境中,是否可能因此而遇到问题?基本上,静态构造函数是默认单例锁定还是我自己必须这样做?那是......我必须做以下事情:

private static Object MyLock;

static MyClass()
{
    lock(MyLock)
    {
        if (MyStringValue == null)
            MyStringValue = GenerateString();
    }
}
Run Code Online (Sandbox Code Playgroud)

c# singleton static multithreading readonly

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

使用正则表达式替换MS Outlook html源字符串?

我有一个应用程序,它读取源html并下载电子邮件的所有附件.这种方法很好,除了Microsoft Outlook有一些奇怪的源值,例如......

<img width="163" height="39" id="Picture_x0020_1" src="cid:image001.png@01CD7F6C.70CD2320" alt="Description: Description: Description: cid:image001.png@01CC6D59.AEF6D270">

首先,我想将它更改为Attachments\image001.png作为源.另外,alt应该只是image001.png,而不是这个长怪异的alt.不太确定如何解决这个问题.

.net html c# regex replace

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

默认情况下,C#枚举实现了哪些接口

基本上,如果我在C#中声明一个枚举,默认情况下它会实现哪些接口?

public enum Group
{
    Unknown,
    Children,
    Teens,
    YoungAdults,
    Adults,
}
Run Code Online (Sandbox Code Playgroud)

c# enums interface .net-4.5

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

如何使用匿名方法初始化静态只读变量?

我正在尝试清理用于初始化静态只读变量的代码。

原来的:

public static readonly List<int> MyList;

//Initialize MyList in the static constructor
static MyObject() { ... }
Run Code Online (Sandbox Code Playgroud)


我决定清理它,因为 CodeAnalysis 说我不应该使用静态构造函数 (CA1810)。

清理:

public static readonly List<int> MyList = GetMyList();

//Returns the list
private static List<int> GetMyList() { ... }
Run Code Online (Sandbox Code Playgroud)


我真的不喜欢附加方法,所以我想我会尝试让它全部内联,但它不起作用。我不确定我在这里做错了什么......

public static readonly List<int> MyList =
    () =>
       {
           ...

           return list;
       };
Run Code Online (Sandbox Code Playgroud)

我试图将GetMyList()方法中的代码放入匿名委托中以返回要分配的列表,但它说我正在尝试将 adelegate转换为List<int>?

c# static delegates anonymous-function static-members

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

是否有可能以编程方式强制派生类将自身作为泛型类型传递给基类?

基本上,我有以下情况:

public abstract class FooBase<T> where T : FooBase<T>
{
    public bool IsSpecial { get; private set; }

    public static T GetSpecialInstance()
    {
        return new T() { IsSpecial = true };
    }
}

public sealed class ConcreteFooA : FooBase<ConcreteFooA> { ... }
public sealed class ConcreteFooB : FooBase<ConcreteFooB> { ... }
Run Code Online (Sandbox Code Playgroud)

但是,我在这里看到的问题是我可以完成ConcreteFooB : FooBase<ConcreteFooA> { ... },这会在运行时完全弄乱类(它不符合我想要实现的逻辑),但仍然可以正确编译.

有没有什么方法我没有想到强制执行泛型T,无论派生类是什么?


更新:我最终在类中使用泛型参数T,FooBase<T>我只是没有列出每个将它作为out和in参数的方法,但我确实有一个用于T.

c# generics

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

如何在Visual Studio 2013中创建自己的"resx"文件版本?

如何创建一个xml文件,该文件可以自动创建类似于*.resx文件的*.designer.cs文件?

基本上,我有一个xml文件(foo.xyz).更新后,我希望它自动创建(或更新)作为DependantUponfoo.xyz文件的*.designer.cs 文件.我不知道这个过程甚至被称为知道如何搜索有关它的任何相关信息.谢谢!

c# xml xslt visual-studio-2013

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